Reactjs AtlasKit表单提交方法中的状态更改问题
在AtlaskitReactjs AtlasKit表单提交方法中的状态更改问题,reactjs,atlaskit,Reactjs,Atlaskit,在Atlaskit表单的submit方法中,我想更改导致表单隐藏的state属性的值: <Form onSubmit={data => { return new Promise(resolve => { setShowForm(false); resolve(); }) }}> </Form> 因此,当我更改状态时,表单显然仍在卸载(虽然我不知道为什么这会影响表单,但我还不太熟悉React)。我在这里应该采
表单的submit
方法中,我想更改导致表单隐藏的state属性的值:
<Form onSubmit={data => {
return new Promise(resolve => {
setShowForm(false);
resolve();
})
}}>
</Form>
因此,当我更改状态时,表单显然仍在卸载(虽然我不知道为什么这会影响表单,但我还不太熟悉React)。我在这里应该采取什么方法?这是因为您向API发出了异步请求,请求(例如Promise)尚未解决,但您卸载了组件
您可以通过维护一个标志来解决此问题,例如_isMounted,以查看组件是否已卸载,并根据承诺解决方案更改标志值
//示例代码
class Form extends Component {
_isMounted = false;
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentDidMount() {
this._isMounted = true;
axios
.get('my_api_url')
.then(result => {
if (this._isMounted) {
this.setState({
data: result.data.data,
});
}
});
}
componentWillUnmount() {
this._isMounted = false;
}
render() {
...
}
}
这是因为您向API发出了异步请求,请求(例如Promise)尚未解析,但您卸载了组件
您可以通过维护一个标志来解决此问题,例如_isMounted,以查看组件是否已卸载,并根据承诺解决方案更改标志值
//示例代码
class Form extends Component {
_isMounted = false;
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentDidMount() {
this._isMounted = true;
axios
.get('my_api_url')
.then(result => {
if (this._isMounted) {
this.setState({
data: result.data.data,
});
}
});
}
componentWillUnmount() {
this._isMounted = false;
}
render() {
...
}
}
我认为我遇到的问题是Atlaskit表单中的某些内容,因为卸载后我自己没有进行任何状态更新。在我删除表单后,它的状态似乎发生了变化。我认为我遇到的问题是Atlaskit表单中的一些问题,因为我在卸载后没有自己进行任何状态更新。在我删除表单后,它的状态似乎发生了变化。