我尝试使用带有钩子的反应。我有这个状态:
const [state, setState] = useState<State>({
titel: "",
somethingElse: "",
tabledata: [],
});
我有两个使用效果:
// componentDidMount, Initial variable deklaration
useEffect(() => {
//Do something
//Set initial states
setState({
...state,
titel: props.titel,
somethingElse: props.somethingElse,
})
}, []);
// Similar to componentDidMount and componentDidUpdate:
useEffect(() => {
//Do something and generate tabledata
let tabledata ....
//Set tabledata
setState({
...state,
tabledata: tabledata,
})
}, [props.taenzer]);
现在我有了这样的行为,即第二个 useEffect 覆盖了第一个 useEffect setState 命令。我的变量 title 和 somethingElse 始终为空。
现在我可以通过以下方式更改我的状态声明:
const [titel, setTitel] = useState<>({
titel = ""
});
const [somethingElse, setSomethingElse] = useState<>({
somethingElse = ""
});
但这使得整体变得不清楚,并且像 setState(...state, title="Hello", somethingElse="Else") 那样一次性设置多个变量的状态并不容易
还有其他可能吗?