微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在需要时停止反应物料台装载机

如何解决如何在需要时停止反应物料台装载机

我想在显示自定义错误消息时停止材料表加载器。这是我的材料表组件。而且我还需要知道如何在条件为假时创建自定义错误消息,就像 toaster 一样。这是我的尝试。请让我知道是否有办法做到这一点。因为我完全是材料表的初学者。

const tableIcons = {
    Add: forwardRef((props,ref) => <AddBox {...props} ref={ref} />),Check: forwardRef((props,ref) => <Check {...props} ref={ref} />),Clear: forwardRef((props,ref) => <Clear {...props} ref={ref} />),Delete: forwardRef((props,ref) => <DeleteOutline {...props} ref={ref} />),DetailPanel: forwardRef((props,ref) => <ChevronRight {...props} ref={ref} />),Edit: forwardRef((props,ref) => <Edit {...props} ref={ref} />),Export: forwardRef((props,ref) => <SaveAlt {...props} ref={ref} />),Filter: forwardRef((props,ref) => <FilterList {...props} ref={ref} />),FirstPage: forwardRef((props,ref) => <FirstPage {...props} ref={ref} />),LastPage: forwardRef((props,ref) => <LastPage {...props} ref={ref} />),NextPage: forwardRef((props,PrevIoUsPage: forwardRef((props,ref) => <ChevronLeft {...props} ref={ref} />),ResetSearch: forwardRef((props,Search: forwardRef((props,ref) => <Search {...props} ref={ref} />),SortArrow: forwardRef((props,ref) => <ArrowDownward {...props} ref={ref} />),ThirdStateCheck: forwardRef((props,ref) => <Remove {...props} ref={ref} />),ViewColumn: forwardRef((props,ref) => <ViewColumn {...props} ref={ref} />)
  };

const Table = ({columns,data,setData,required}) => {
    const [isLoading,setIsLoading] = useState(false);
    const [tableError,setTablesError] = useState({});

    useEffect(() => {
        //showing error message
      },[tableError]
    );

    return (
        <MaterialTable
        columns={columns}
        data={data}
        icons={tableIcons}
        options={{
          showTitle:false,search:false,paging:false,actionsColumnIndex:4,addRowPosition:'first',}}
        editable={{
          onRowAdd: newData => 
            new Promise((resolve,reject) => {
              let error = [];
              if(required.length > 0){
                var result = Object.keys(newData).map((key) => [key,newData[key]]);
                required.forEach(function(value){
                if(!result.some(row => row.includes(value))){
                    error.push(value)
                  };
                })
              }
              if(error.length > 0){
                setTablesError({error:'1',columns:error,msg:'validation'});
              }else{
                setTablesError({error:'0',columns:'',msg:''});
                setTimeout(() => {
                  setData([...data,newData]);
                  resolve();
                },1000)
              }
            }),onRowUpdate: (newData,oldData) =>
            new Promise((resolve,reject) => {
              setTimeout(() => {
                const dataUpdate = [...data];
                const index = oldData.tableData.id;
                dataUpdate[index] = newData;
                setData([...dataUpdate]);
                resolve();
              },1000)
            }),onRowDelete: oldData =>
            new Promise((resolve,reject) => {
              setTimeout(() => {
                const dataDelete = [...data];
                const index = oldData.tableData.id;
                dataDelete.splice(index,1);
                setData([...dataDelete]);
                resolve()
              },}}
      />
    )
  }

export default Table;

提前谢谢!

解决方法

这是promise调用,如果你想停止加载器调用resolve()函数。 它将解析 promise 调用并且加载程序将停止。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。