gpt4 book ai didi

javascript - react 控制组件未正确接收输入

转载 作者:行者123 更新时间:2023-11-28 06:32:20 25 4
gpt4 key购买 nike

我无法找出受控组件。几乎完全按照文档中的示例执行所有操作:https://facebook.github.io/react/docs/forms.html#controlled-components .

发生的情况是只有一个输入字符进入输入。下一个字符输入时,前一个字符将被替换。当我输入“asdf”时,我得到:

changeName a
changeName s
changeName d
changeName f

这是我的代码:

export class MyComponent extends Component {
constructor(props) {
super(props)
this.handleChangeName = this.handleChangeName.bind(this)
this.handleChangeDescription = this.handleChangeDescription.bind(this)
this.state = ({name:'',description:''})
}

shouldComponentUpdate (nextProps, nextState) {
return false
}

handleChangeName(event) {
console.log('changeName',event.target.value)
this.setState({name: event.target.value.substr(0, 8)});
}

handleChangeDescription(event) {
this.setState({description: event.target.value.substr(0, 140)});
}

render () {
return (
<Row>
<Col xs={12} lg={12} className="beacon-fields">
<Input id="name" help="Name" className="form-control" type="text" value={this.state.name} onChange={this.handleChangeName} />
<Input id="description" help="Description" className="form-control" type="text" value={this.state.description} onChange={this.handleChangeDescription} />
</Col>
</Row>
)
}

我做错了什么?

最佳答案

这个问题相当明显。 shouldComponentUpdate 方法阻止渲染执行,这意味着输入没有出现在输入字段中。解决方案相当简单:

shouldComponentUpdate (nextProps, nextState) {
if (this.state !== nextState) {
return true
}
return false
}

关于javascript - react 控制组件未正确接收输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34595576/

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