【发布时间】:2017-12-25 19:20:47
【问题描述】:
我正在构建一个 react 应用程序,其中一个方面涉及记录来自 textarea 的活动并在应用程序的不同位置实时显示它。我将 textarea 绑定到 onChange 事件并且 onChange 正在触发,但我遇到的问题是 onChange 函数一直在记录输入,为时已晚。例如,如果我在 textarea 中输入“hello”,onChange 监听器将记录并输出“hell”。
代码如下。感谢您的帮助!
组件代码:
export default class StepTwo extends React.Component {
constructor(props) {
super(props);
this.state={
headlineText: '',
}
this.writeHeadlineChild = this.writeHeadlineChild.bind(this);
}
updateHeadlineValue(evt) {
this.setState({
headlineText: evt.target.value
})
}
writeHeadlineChild(e) {
e.preventDefault();
e.stopPropagation();
e.nativeEvent.stopImmediatePropagation();
this.props.headWriter(this.state.headlineText, this.state.headlineFont);
}
render() {
return (
<
form className = "card-form"
onChange = {
(e) => {
this.writeHeadlineChild(e)
}
} >
<
div className = "form-group"
onChange = {
evt => this.updateHeadlineValue(evt)
} >
<
label htmlFor = "headline"
className = "form-label" > Your message < /label> <
textarea className = "form-control"
id = "headline" > < /textarea> <
/div> <
/form>
<
/div>
)
}
}
以及父组件中的函数:
writeHeadline(t, f) {
var headline = document.querySelector('.headline');
function headlinePreview() {
headline.innerHTML = t;
headline.style.fontFamily = f;
}
headlinePreview();
}
【问题讨论】:
-
如果将 onchange 替换为 onkeyup 会发生什么?
-
根据您想要捕获更改的时间使用 onkeyup 或 onkeydown。
-
谢谢大家的帮助。原来问题是由我处理状态的方式引起的。来自文本字段的信息被保存为“待定状态值”,并且没有在适当的时间传递。有一个很好的解释in this post
标签: javascript reactjs