![](/img/trans.png)
[英]How can i return an html in a function in javascript as in jsx (react)?
[英]How can I set the state and return JSX with the same function
我正在尝试创建一个 function,当它被调用时,它将 state 设置为 object {item: 'whatever the user types', list: [...list, todo]}; 但是,我不知道如何设置新的 state 并同时返回<li>{todo}</li>
。 我被困了一段时间,所以如果你能帮助我,我将不胜感激。
const Todo = () => {
const [state, setState] = useState({ item: '', list: [] });
const setTodoValue = (e) => {
setState((previousState) => {
return { ...previousState, item: e.target.value };
});
};
const addTodo = () => {
setState((previousState) => {
return {
...previousState,
list: [...previousState.list, previousState.item],
};
});
};
return (
<div>
<input onChange={setTodoValue} type="text" />
<button onClick={addTodo}> + </button>
{}
</div>
);
};
您不能也不会更新 state并同时返回 JSX。 您将 state 更新加入队列,React 更新 state,并且您描述了如何从 state 渲染 JSX。渲染返回应该将state
和 map 带入一堆列表项li
元素。
有关从 arrays 渲染 JSX 的更多详细信息,请参阅列表和键。
将state.list
渲染成无序列表的示例:
const Todo = () => {
const [state, setState] = useState({ item: '', list: [] });
const setTodoValue = (e) => {
setState((previousState) => {
return { ...previousState, item: e.target.value };
});
};
const addTodo = () => {
setState((previousState) => {
return {
...previousState,
list: [...previousState.list, previousState.item],
};
});
};
return (
<div>
<input onChange={setTodoValue} type="text" />
<button type="button" onClick={addTodo}> + </button>
<ul>
{state.list.map(todo => (
<li key={todo}>{todo}</li>
))}
</ul>
</div>
);
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.