为什么我无法在子自定义组件上获取我的onChange处理程序工作? 我错过了什么吗?你们能帮我解决吗,如果有最佳实践可以做到这一点,你能告诉我吗?谢谢。
示例代码:
var TextBox = React.createClass ({
getDefaultProps: function() {
return {
className: 'input-box'
};
},
render() {
return (
<input type="text" />
);
}
});
var Dashboard = React.createClass({
handleChange() {
alert('test');
}
render() {
return (
<div>
<h1>Components</h1>
<label>Input Box</label><br/>
<TextBox onBlur={this.handleChange} type="text" placeholder="hints (optional)"/>
</div>
)
}
});
//ReactDOM.render goes here...
您需要将事件处理程序作为道具一直传递到输入组件。实际上,您的input
没有设置事件绑定。
最里面的孩子的一种简单方法是使用传播运算符将TextBox
组件中的所有道具传递给子级。
因此,您的TextBox
组件呈现函数如下所示:
render() {
return (
<input { ...this.props } type="text" />
);
}
就是这样!你传递给<TextBox />
的所有道具都会进入<input>
您需要使用回调来获取父组件中的更改
尝试如下,
class TextBox extends React.Component {
render() {
return (
<input onBlur={this.props.callBack} type="text" />
);
}
}
class Dashboard extends React.Component {
render() {
const handleChange = () => {
console.log('---');
}
return (
<div>
<h1>Components</h1>
<label>Input Box</label><br/>
<TextBox callBack={handleChange} type="text" placeholder="hints (optional)"/>
</div>
);
}
}
React.render(
<Dashboard />,
document.getElementById('react_example')
);