Stworzyłem tę prostą listę TODO, a kiedy chcę zaznaczyć pole wyboru, nie mogę.React.js nie może zmienić stanu pola wyboru
import React from 'react';
const TodoItem = React.createClass({
render() {
return (
<div>
<span>{this.props.todo}</span>
<input type="checkbox" checked={this.props.done} />
</div>
);
}
});
export default TodoItem;
Rodzic:
import React from 'react';
import TodoItem from './TodoItem';
import AddTodo from './AddTodo';
const TodoList = React.createClass({
getInitialState() {
return {
todos: [{
todo: 'some text',
done:false
},{
todo: 'some text2',
done:false
},
{
todo: 'some text3',
done:true
}]
};
},
addTodo (childComponent) {
var todoText = childComponent.refs.todoText.getDOMNode().value;
var todo = {
todo: todoText,
done:false
};
var todos = this.state.todos.concat([todo]);
this.setState({
todos:todos
});
childComponent.refs.todoText.getDOMNode().value = '';
},
render() {
var Todos = this.state.todos.map(function(todo) {
return (
<TodoItem todo={todo.todo} done={todo.done} />
)
});
return (
<div>
{Todos}
<AddTodo addTodo={this.addTodo}/>
</div>
);
}
});
export default TodoList;
Kup dlaczego muszę to robić? Nie potrzebuję obsługi Zmień, co muszę napisać wewnątrz tego programu obsługi? – Bazinga
Potrzebujesz tego, ponieważ React oczekuje jednego. To tak zwane kontrolowane lub niekontrolowane wejścia. Przeczytaj tutaj dlaczego, http://facebook.github.io/react/docs/forms.html –
Już testowałem tę metodę, ale nie działa ona dla mojego kodu. Używam komponentu Checkbox z Materialnego interfejsu użytkownika. – Casper