为什么在React的useReducer简单Todo应用中我会收到“组件正在将类型为未定义的不受控制的输入更改为受控制的输入..”的提示?
为什么在React的useReducer简单Todo应用中我会收到“组件正在将类型为未定义的不受控制的输入更改为受控制的输入..”的提示?
这个问题已经有了答案:
组件正在将类型未定义的不受控制的输入更改为受控制的。输入元素不应该从不受控制的状态切换到受控制的状态(反之亦然)。在组件的生命周期中决定使用受控制的或不受控制的输入元素。
function reducer(state, action) { switch (action.type) { case "add": return { todos: [...state.todos, { text: action.text, completed: false }] }; case "toggle": return { todos: state.todos.map((t, idx) => idx === action.idx ? { ...t, completed: !t.completed } : t ) }; default: return state; const App = () => { const [{ todos, todoCount }, dispatch] = useReducer(reducer, { todos: [] }); const [text, setText] = useState(); return ( {todos.map((t, idx) => (
dispatch({ type: "toggle", idx })} } > {t.text} )
admin 更改状态以发布 2023年5月21日