reactjs - 如何在 React 中显示特定项目 onClick?
问题描述
所以我的反应中有一个 ol 列表。看起来像这样
<ol>
{
items.map(todo => (
<li key={todo.taskId} className={todo.completed ? 'active' : 'inactive'}>
<span onClick={() => dispatch(updateTodo())}>{todo.task}</span>
<div className='hidden updatePanel'>
<input type='text' value={todo.task}/>
<input type='checkbox' checked={todo.completed}></input>
</div>
</li>
))
}
</ol>
我想单击一个标签并显示该特定的 updatePanel div。有没有办法实现它?感谢帮助!
解决方案
您可以使用状态显示隐藏
import React, { useState } from 'react';
const Todo = ({ todo, dispatch, saveTodo }) => {
const [show, setShow] = useState(false);
const [text, setText] = useState(todo.task);
const [completed, setCompleted] = useState(todo.completed);
const toggle = () => {
setShow(v => !v);
};
const saveTodo = () => {
dispatch(saveTodo({ task: text, completed }));
setShow(false);
}
return (
<li key={todo.taskId} className={todo.completed ? 'active' : 'inactive'}>
<span onClick={toggle}>{todo.task}</span>
{show && (
<div className='hidden updatePanel'>
<input type='text' value={text} onChange={e => setText(e.target.value)}/>
<input type='checkbox' checked={completed} onChange={e => setCompleted(e.target.checked)}> </input>
<button onClick={saveTodo}>Save</button>
</div>
)}
</li>
)
}
// Add required props yourself
<ol>
{
items.map(todo => <Todo {...todo} dispatch={props.dispatch} />)
}
</ol>
推荐阅读
- explorer - 通过 desktop.ini 更改网络驱动器中的资源管理器列
- numpy-random - 使用 Numpy Random 函数时出错(np.random.random_integers)
- sql - 无法在 CTE 中使用变量值
- checksum - 如何使用 javascript big endian 格式计算 16 位校验和值
- workflow - AEM 6.5,如何将工作流位置更改为模型/子文件夹
- c# - 如何验证自适应卡片机器人框架v4(瀑布模型)c#中的输入字段
- postgresql - 如何从邻接列表中获取后代数组?
- terraform - 如何在 Terraform Enterprise/Cloud 中运行“terraform state mv”命令?
- c# - 为所有字符提供相等宽度/空间的选项
- sql - 如何指定我的表以将数据以分钟和秒为单位的时间插入列中?