ReactJS - 将输入值转发给父组件
ReactJS - Forwarding input value to parent component
我无法完成相当简单的任务。单击按钮我想控制台日志输入值。
发生的事情是它记录输入更改而不是单击。我做错了什么?
var Tasker = React.createClass({
getInitialState: function() {
return {
};
},
handleChange: function(event) {
this.setState({
value: event.target.value
});
},
render: function () {
return (
<div>
<input type="text" value={this.state.value} onChange={this.handleChange}/>
<button onClick={this.props.onClick(this.state.value)}>Add task</button>
</div>
);
}
});
var List = React.createClass({
handleNewTaskClick: function (value) {
console.log(value);
},
render: function () {
return (
<Tasker onClick={this.handleNewTaskClick}/>
);
}
});
ReactDOM.render(<List />, document.getElementById('react-app'));
JSbin link:https://jsbin.com/vororomuzo/edit?html,console,output
不确定为什么每次状态改变时都会触发 onClick 而不是触发事件时触发,但是如果您创建 handleClick 方法并调用它而不是在 jsx 中处理它,它会正常工作。
handleClick: function() {
this.props.onClick(this.state.value);
},
render: function () {
return (
<div>
<input
type="text"
value={this.state.value}
onChange{this.handleChange}
/>
<button onClick={this.handleClick}>Add task</button>
</div>
);
}
已更新jsbin
我无法完成相当简单的任务。单击按钮我想控制台日志输入值。 发生的事情是它记录输入更改而不是单击。我做错了什么?
var Tasker = React.createClass({
getInitialState: function() {
return {
};
},
handleChange: function(event) {
this.setState({
value: event.target.value
});
},
render: function () {
return (
<div>
<input type="text" value={this.state.value} onChange={this.handleChange}/>
<button onClick={this.props.onClick(this.state.value)}>Add task</button>
</div>
);
}
});
var List = React.createClass({
handleNewTaskClick: function (value) {
console.log(value);
},
render: function () {
return (
<Tasker onClick={this.handleNewTaskClick}/>
);
}
});
ReactDOM.render(<List />, document.getElementById('react-app'));
JSbin link:https://jsbin.com/vororomuzo/edit?html,console,output
不确定为什么每次状态改变时都会触发 onClick 而不是触发事件时触发,但是如果您创建 handleClick 方法并调用它而不是在 jsx 中处理它,它会正常工作。
handleClick: function() {
this.props.onClick(this.state.value);
},
render: function () {
return (
<div>
<input
type="text"
value={this.state.value}
onChange{this.handleChange}
/>
<button onClick={this.handleClick}>Add task</button>
</div>
);
}
已更新jsbin