除非点击了可点击列表项,否则下面的代码按预期工作。因此,当我们添加项目时,映射的ID是正常的,而当单击undefined
时,<li>
是let nextId = 0;
export default React.createClass({
addItem(){
let text = ReactDOM.findDOMNode(this.refs.doos).value;
store.dispatch({
type: 'ADD_TODO',
text,
id: nextId++
})
ReactDOM.findDOMNode(this.refs.doos).value = '';
},
render(){
return <div>
<p>Toddos!</p>
<input ref="doos" type="text"/>
<button onClick={this.addItem}>Add Item</button>
<ul>
{this.props.todos.map(todo =>
<li key={todo.id} // Can not read property when clicked!
onClick={() => {
store.dispatch({
type: 'TOGGLE_TODO',
id: todo.id
});
}}
style={{
textDecoration: todo.completed ?
'line-through' : 'none',
cursor: 'pointer'
}}>
{todo.text}
</li>
)}
</ul>
</div>
}
});
。
请问,这段非常基本的代码有什么问题?
function va_custom_excerpt_length() {
return 20;
}
add_filter( 'excerpt_length', 'va_custom_excerpt_length', 999 );
答案 0 :(得分:0)
它可能与你的减速器没有返回状态有关。在映射到所有待办事项的reducer中,检查它是否返回每个待办事项的状态。
可能存在的问题是您在map
函数中使用花括号作为todosReducer。但是,在ES6中使用大括号意味着您应该明确地返回值。省略大括号会自动返回值。
在你的todosReducer:
case 'TOGGLE_TODO':
return state.map(todo => {
todoReducer(todo, action) // You should use return here
});
或者:
case 'TOGGLE_TODO':
return state.map(todo =>
todoReducer(todo, action) // Omitted curly brackets
);