gpt4 book ai didi

javascript - 在表单提交时调用 `componentDidUpdate`

转载 作者:行者123 更新时间:2023-11-29 18:52:59 24 4
gpt4 key购买 nike

我有一个类组件如下:

class App extends Component {
constructor(props){
super(props);
this.state = {
abc: '',
someQuery: ''
}
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}

componentDidUpdate(){
fetch(`/someLink/${this.state.abc}`)
.then(response => {
return response.json();
}).then(data => {
this.setState({
someQuery: data.xxx
});
});
}
handleSubmit(e){
const target = e.target;
const value = target.value;

this.setState({
abc: value
})
e.preventDefault();
};
handleChange(e){
const target = e.target;
const value = target.value;

this.setState({
abc: value
});
};
render(){
return(
<form onSubmit={this.handleSubmit}>
<input name='abc' value={this.state.abc} onChange={this.handleChange} />
<input type="submit" value="Submit" />
</form>

<div>{this.state.abc} is currently accessing data from {this.state.someQuery}</div>
)
}
}

每次更新输入字段的值并单击提交按钮时,如何运行 componentDidUpdate()

上面调用了生命周期,但由于 handleChange() 中的 setState ,生命周期在我输入内容时被调用,但没有等到提交按钮被点击。

handleChange() 中删除 setState 使输入字段值不再可编辑(无法在输入字段上键入)。

我需要在生命周期中将输入字段值附加到 api 链接,但我似乎无法找到执行此操作的正确方法。

最佳答案

您可以在组件类中添加任何方法并在提交时调用它。 componentDidUpdate 不是做这种事情的正确位置,尤其是设置状态是犯罪 :D

class App extends Component {
constructor(props){
super(props);
this.state = {
abc: '',
someQuery: ''
}
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}

doSommething (value){
fetch(`/someLink/${value}`)
.then(response => {
return response.json();
}).then(data => {
this.setState({
someQuery: data.xxx
});
});
}
handleSubmit(e){
const target = e.target;
const value = target.value;

this.setState({
abc: value
})
e.preventDefault();
doSommething(value);
};
handleChange(e){
const target = e.target;
const value = target.value;

this.setState({
abc: value
});
};
render(){
return(
<form onSubmit={this.handleSubmit}>
<input name='abc' value={this.state.abc} onChange={this.handleChange} />
<input type="submit" value="Submit" />
</form>

<div>{this.state.abc} is currently accessing data from {this.state.someQuery}</div>
)
}
}

关于javascript - 在表单提交时调用 `componentDidUpdate`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50537866/

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