【发布时间】:2023-03-20 13:35:01
【问题描述】:
我有一个执行 ajax 请求(通过 axios)的 React 组件 (App.js)。通过这些请求传递的参数值取自用户操作的输入字段。根据响应,它会更新其状态。
sendValue(value) {
const url = `${myURl}/c${value}\r`;
axios.get(url)
.then(res=>{
this.setState({
data:res.data
})
})
.catch(err => {
console.log('err', err);
})
}
然后在return语句中,这个函数作为prop传递给子组件:
<Child sendValue={this.sendValue}>
子组件 (Child.js) 有几个输入字段。这个子组件有自己的状态。当输入字段发生变化时,值会通过 props 传递给 axios 函数。
handleChange(e) {
const { value } = e.target;
this.setState({ input: value }, console.log('state', this.state));
this.props.sendValue(`${value}\r`);
}
实际的输入元素如下所示:
<input
value={this.state.value}
onChange={this.handleChange}
/>
如果我省略这行this.props.sendValue(${value}\r);,状态会更新并且输入字段的值会发生变化(作为回调函数的console.log 证明了这一点,并且输入字段的实际值也会发生变化)。
但是当我把它留在里面时,什么都没有改变,状态永远不会更新,console.log 永远不会被调用。
为什么?
我该如何解决这个问题?
【问题讨论】:
-
您是否将 sendValue 绑定到它的定义位置?
-
是的,我通过
this.sendValue = this.sendValue.bind(this);在构造函数中绑定它 -
开发工具控制台中的任何错误?
-
你绑定handleChange了吗??
-
我确实绑定了handleChange,并且在开发控制台中没有错误
标签: javascript reactjs state react-props