我实际上正在尝试使用ReactJs,我觉得这很有趣,并为我提供了解决我的View问题的新方法。
但在尝试删除子组件中的项目时遇到问题:
这是我的代码:
MyDirective = React.createClass({
getInitialState: function () {
toReturn = {}
toReturn.text = 'Hi';
toReturn.stringList = [
{id: 1, value: 'value 1'},
{id: 2, value: 'value 2'},
{id: 3, value: 'value 3'}
];
return toReturn;
},
handleChange: function (event) {
this.setState({text: event.target.value});
},
handleKeypress: function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code === 13) {
this.setState({stringList: this.state.stringList.concat([
{id: this.state.stringList.length + 1, value: this.state.text}
])})
}
},
render: function () {
return (
<div>
<input type="text" value={this.state.text} onChange={this.handleChange} onKeyPress={this.handleKeypress} />
<p>
{this.state.text}
</p>
<Listing stringList={this.state.stringList} />
</div>
);
}
});
Listing = React.createClass({
handleClick: function (item) {
// I cant modify my state there :-/
},
render: function () {
return(
<ul>
{
this.props.stringList.map(function (item) {
return(
<li key={item.id}>{item.value} ->
<button onClick={this.handleClick}>Delete</button>
</li>
);
}.bind(this))
}
</ul>
);
}
});
React.render(
<MyDirective text=""/>,
document.getElementById('container')
);
答案 0 :(得分:1)
在这种情况下,您的父组件将“监听”商店的更改(使用eventEmitter),并在商店中所做的更改时更新其状态。
希望这会有所帮助。