我做了basic redux todolist tutorial和它的工作,但我想获得通过做一个小的变化就知道的代码。终极版 - 传递减速的动作似乎有不确定的ID
我改变:
动作/ index.js
let nextTodoId = 0
export const addTodo = (text) => {
return {
type: 'ADD_TODO',
id: nextTodoId++,
text
}
}
这样:
let nextTodoId = 0
export const addTodo = (text) => {
return {
type: 'ADD_TODO',
payload: {
id: nextTodoId++,
text: text
}
}
}
而且我得到了增加一个待办事项与工作,但一个奇怪的副作用发生在toggleTodo - 没有控制台的错误,但单击待办事项列表项应该是之间完成(在视觉上有ST切换它穿过文本)并没有完成。点击列表项目现在不起作用。
我挣扎通过这个减速器具有定义id
的动作。
减速/ todos.js:
这是调用toggleTodo(id)
减速器(寻找箭头指向,并说 “这里”),代码:
集装箱/ visibleTodoList.js:
import { connect } from 'react-redux'
import { toggleTodo } from '../actions'
import TodoList from '../components/TodoList'
const getVisibleTodos = (todos, filter) => {
switch (filter) {
case 'SHOW_ALL':
return todos
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
}
}
const mapStateToProps = (state) => {
return {
todos: getVisibleTodos(state.todos, state.visibilityFilter)
}
}
const mapDispatchToProps = (dispatch) => {
return {
onTodoClick: (id) => {
dispatch(toggleTodo(id)) <-------------HERE
}
}
}
const VisibleTodoList = connect(
mapStateToProps,
mapDispatchToProps
)(TodoList)
export default VisibleTodoList
所以ID是onTodoClick
到来。
组件/ TodoList.js:
所以我有暂停和看到的onTodoClick()
值:
凡在original code是它设置onTodoClick.id
所以我可以再说一遍,以获得onTodoClick.id
来定义(因此厚福导致点击todo项目成功切换)。
是的,这是因为id属性搬迁 – bonesbrigade