Reactjs Can';t在未安装的组件上执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。在材料上
我是React的新手,尝试创建一个表时感到很笨拙。我想学习如何使用应该更好的挂钩。我已经读过了,但是我不知道如何使用isMount变量,或者如果必须返回数据和setDtata,我应该如何返回它。我使用的是Material Table,当我尝试刷新表内容时出现错误 首先,我创建了一个动作按钮。我想让用户点击按钮更改数据行。我设法更新了数据库中的数据,但我无法修改数据表,以便用户可以看到该帐户已生效 我现在尝试使用“可编辑”材质表属性。我没有使用操作按钮,而是在下面准备了一个下拉列表。但在onRowUpdate函数中更新数据表(setTableData())时会出现错误 这是我的密码:Reactjs Can';t在未安装的组件上执行React状态更新。这是一个no-op,但它表示应用程序中存在内存泄漏。在材料上,reactjs,react-hooks,material-table,Reactjs,React Hooks,Material Table,我是React的新手,尝试创建一个表时感到很笨拙。我想学习如何使用应该更好的挂钩。我已经读过了,但是我不知道如何使用isMount变量,或者如果必须返回数据和setDtata,我应该如何返回它。我使用的是Material Table,当我尝试刷新表内容时出现错误 首先,我创建了一个动作按钮。我想让用户点击按钮更改数据行。我设法更新了数据库中的数据,但我无法修改数据表,以便用户可以看到该帐户已生效 我现在尝试使用“可编辑”材质表属性。我没有使用操作按钮,而是在下面准备了一个下拉列表。但在onRow
function useDataTable(props){
const [data,setData] = useState([]);
const translations = props.translations;
useEffect(() => {
setData(translations);
},[translations]);
return [data, setData];
}
function Table(props) {
const [tableData, setTableData] = useDataTable(props);
const lang = props.lang;
const tableRef = React.createRef();
return (
<MaterialTable
tableRef={tableRef}
title="Translations"
icons= {tableIcons}
options = {{
filtering: true,
sorting: true,
}}
columns={columns}
data={tableData}
editable={{
onRowUpdate: (newData, oldData) =>
new Promise((resolve, reject) => {
const dataUpdate = [...tableData];
console.log("Data update", dataUpdate);
dataUpdate[oldData.tableData.id] = newData;
//setTableData(...dataUpdate); //Here is where the code explodes
resolve();
}),
}}
actions={[
/*{
icon: 'validate',
tooltip: 'Validate',
onClick : (event, rowData) => {
const validateUrl = urlTranslations + lang + '/' + rowData._id
console.log("Link will be " + validateUrl);
/* axios.get(validateUrl)
.then(response => {
console.log(response.data);
console.log("Props: ",props);
setTableData(props);
})
.catch(error => console.log("Error in GET ",error));*
let translation = props.translations.findIndex(f=> f._id === rowData._id);
console.log("All data ",rowData);
console.log("Props before: ",props.translations);
props.translations[rowData.tableData.id].text = "test";
console.log("Props after: ",props.translations);
setTableData(props);
tableRef.current.onQueryChange();
}
}*/
]}
/>
)
}
函数useDataTable(props){
const[data,setData]=useState([]);
常量翻译=道具翻译;
useffect(()=>{
setData(翻译);
},[译文];
返回[数据,设置数据];
}
功能表(道具){
const[tableData,setTableData]=useDataTable(props);
const lang=props.lang;
const tableRef=React.createRef();
返回(
新承诺((解决、拒绝)=>{
常量数据更新=[…表数据];
日志(“数据更新”,数据更新);
dataUpdate[oldData.tableData.id]=newData;
//setTableData(…dataUpdate);//代码在这里爆炸
解决();
}),
}}
动作={[
/*{
图标:“验证”,
工具提示:“验证”,
onClick:(事件,行数据)=>{
const validateUrl=urltransactions+lang+'/'+rowData.\u id
日志(“链接将是”+validateUrl);
/*axios.get(validateUrl)
。然后(响应=>{
console.log(response.data);
日志(“道具:”,道具);
可设置数据(props);
})
.catch(error=>console.log(“GET中的错误”,error));*
让translation=props.translations.findIndex(f=>f.\u id==rowData.\u id);
console.log(“所有数据”,rowData);
日志(“Props before:”,Props.translations);
props.translations[rowData.tableData.id].text=“test”;
console.log(“Props后:”,Props.translations);
可设置数据(props);
tableRef.current.onQueryChange();
}
}*/
]}
/>
)
}
下面是docs和reading SO提问中的另一个示例,我还尝试创建一个表ref并使用tableRef.current.onQueryChange(),但出现了几个错误。我做错了什么?任何有助于了解发生了什么的事情都会很好