gpt4 book ai didi

reactjs - 使用 mui-datatable 动态添加新列

转载 作者:行者123 更新时间:2023-12-04 00:45:03 25 4
gpt4 key购买 nike

每次按下按钮时,我都想在 mui-datatable 中添加一个新列。然而,数据表似乎并没有呈现它。但是,如果我单击添加列按钮,然后选择下拉列表,则会出现新列。此外,选定的下拉值似乎也没有反射(reflect)出来。我已将问题缩小到使用 const [columns,setColumns] = useState(...) 列,但没有它,我根本无法动态添加任何新列。感谢任何帮助让我摆脱这个泡菜,谢谢。

https://codesandbox.io/s/unruffled-sun-g77xc

const App = () => {
function handleChange(event) {
setState({ value: event.target.value });
}

const [state, setState] = useState({ value: "coconut" });

const [columns, setColumns] = useState([
{
name: "Column 1",
options: {}
},
{
name: "Column with Input",
options: {
customBodyRender: (value, tableMeta, updateValue) => {
return (
<div>
<select value={state.value} onChange={handleChange}>
<option value="grapefruit">Grapefruit</option>
<option value="lime">Lime</option>
<option value="coconut">Coconut</option>
<option value="mango">Mango</option>
</select>
</div>
);
}
}
}
]);

const options = {
responsive: "scroll"
};

const addColumn = () => {
columns.push({
name: "NewColumn",
label: "NewColumn"
});
setColumns(columns);
};

const data = [["value", "value for input"], ["value", "value for input"]];

return (
<React.Fragment>
<MUIDataTable columns={columns} options={options} data={data} />

//add a new column if this button is clicked
<button onClick={addColumn}>Add Column</button>
</React.Fragment>
);
};

最佳答案

您的新专栏实际上并没有被推送到 columns多变的。使用 useState 时,除非使用 setColumns,否则无法更改变量。 ,否则不会触发重新渲染。试试这个:

  const addColumn = () => {
setColumns([ ...columns, {
name: "NewColumn"
}]);
};

或这个:
  const addColumn = () => {
const editableColumns = [...columns];
editableColumns.push({
name: "NewColumn"
});
setColumns(editableColumns);
};

两者都可以,这只是您的偏好。

您可以测试它是否正在编辑列: useEffect(() => console.log(columns), [columns]);

关于reactjs - 使用 mui-datatable 动态添加新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56938236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com