首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用localStorage存储复选框值?(react+hooks)

如何使用localStorage存储复选框值?(react+hooks)
EN

Stack Overflow用户
提问于 2019-10-06 17:04:56
回答 1查看 327关注 0票数 1

这是我的Todolist组件,它包含一个List,以及带有复选框和物料列表和复选框的所有列表项。传递了两个参数:todosdeleteTodo

代码语言:javascript
运行
复制
const TodoList = ({ todos, deleteTodo}) => {
  return (
    <List>
      {todos.map((todo, index) => (
        <ListItem key={index.toString()} dense button>
         <Checkbox disableRipple/>
          <ListItemText key={index} primary={todo} />
          <ListItemSecondaryAction>
            <IconButton
              aria-label="Delete"
              onClick={() => {
                deleteTodo(index);
              }}
            >
              <DeleteIcon />
            </IconButton>
          </ListItemSecondaryAction>
        </ListItem>
      ))}
    </List>
  );
};

我知道如何使用本地存储将待办事项存储为数组,但不知道如何存储复选框值。有没有人能解释一下,这是什么策略?

下面是主要的应用程序:

代码语言:javascript
运行
复制
  const initialValue = () => {
    const initialArray = localStorage.getItem("todos");
    return JSON.parse(initialArray);
  };

  const [todos, setTodos] = useState(initialValue);

  useEffect(() => {
    const json = JSON.stringify(todos);
    localStorage.setItem("todos", json);
  });


  return (
    <div className="App">
      <Typography component="h1" variant="h2">
        Todos
      </Typography>

      <TodoForm
        saveTodo={todoText => {
          const trimmedText = todoText.trim();
          if (trimmedText.length > 0) {
            setTodos([...todos, trimmedText]);
          }
        }}
      />


      <TodoList
        todos={todos}
        deleteTodo={todoIndex => {
          const newTodos = todos.filter((_, index) => index !== todoIndex);
          setTodos(newTodos);
        }}
      />
    </div>
  );
}; 

如果有任何建议或方向,如何解决这个问题,我将不胜感激。Thx

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-06 18:00:20

一种方法是使用Checkbox componentonChange回调

例如<Checkbox disableRipple onChange={(e)=> onCheckboxChange(e.event.target) /> (以及您需要的任何参数)

并通过一个prop将它向上传递给您的父组件,例如

const TodoList = ({ todos, deleteTodo, onCheckboxChange}) => {

然后可以将该值存储在本地存储中,即父组件。也许有一种更优雅的方法

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58255767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档