I have managed to create a list using ReactJS where you type something in and it adds it to the list underneath the text box. However, I now want the user to be able to delete something from that list.
Here is some code:
var ToDoList = React.createClass({
deleteItem: function(item){
var items = this.state.items.filter(function(itm) {
return item.id !== itm.id;
})
},
render: function() {
var DeleteClick=this.deleteItem;
var listItems = this.props.listItems.map(function(submittedValue) {
return (
<ToDoListItem key={submittedValue.id}>{submittedValue.text}<button onClick={DeleteClick}> X </button></ToDoListItem>
)
});
return (
<ul className="toDoList">
{listItems}
</ul>
);
}
});
This code generates this error message: Uncaught TypeError: Cannot read property 'deleteItem' of undefined
Here is some more code as to how I am generating the adding to the list:
var i = 1;
var ToDoForm = React.createClass({
getInitialState: function() {
return {text: '', submittedValues: [{id: '000001', text: 'Rich'}, {id: '000002', text: 'Simon'}]};
},
handleChange: function(event) {
this.setState({text: event.target.value});
},
handleSubmit: function(e) {
e.preventDefault();
var submittedValue = {text: this.state.text, id: i++};
this.setState({submittedValues: this.state.submittedValues.concat(submittedValue)});
this.setState({text: ''});
console.log("ToDo: " + this.state.submittedValues);
},
render: function() {
return (
<div>
<h1> todos </h1>
<form className="todoForm" onSubmit={this.handleSubmit}>
<input
type="text"
placeholder="Type out a task"
value={this.state.text}
onChange={this.handleChange}
/>
<input
type="submit"
value="Submit todo"
/>
</form>
<h2> Data should appear here </h2>
<ToDoList listItems={this.state.submittedValues}/>
</div>
);
}
});
Not sure how to get the delete to work