reactjs - 复选框状态不会根据 redux 状态而改变

标签 reactjs checkbox redux react-redux

我有一个愚蠢的组件,它接收一堆对象并呈现一个复选框。dumb组件看起来像这样:

// imports

const FilterList = ({ filterTitle, filters, onFilterChange }) => {
  console.log(`FILTERS: ${JSON.stringify(filters)}`);
  return (
    <div>
      <Header colorIndex="light-2" size="small">
        <Label margin="none">
          {filterTitle}
        </Label>
      </Header>
      <List>
        <ListItem direction="column" align="start">
          {filters &&
            filters.map(filter => {
              console.log(filter);
              return (
                <CheckBox
                  key={filter.name}
                  label={filter.name}
                  value={filter.name}
                  checked={filter.checked}
                  onChange={onFilterChange}
                />
              );
            })}
        </ListItem>
      </List>
    </div>
  );
};

FilterList.propTypes = {
  .....
};

export default FilterList;

现在,过滤器是一个对象数组,如下所示:

export const find = [
  {
    type: 'find',
    name: 'Apartment',
    searchType: 'text',
    checked: false,
  },
  {
    type: 'find',
    name: 'Assisted Living',
    searchType: 'text',
    checked: false,
  }
];

现在我有一个容器,它可以处理复选框的 onChange 事件并相应地切换其checked 状态。现在,我正确处理了 onChange 事件,因为我看到 checked 属性是 truefalse 反射(reflect)在应用程序状态正确。

我不明白发生了什么,但是商店中的更改不会反射(reflect)或传播回dumb组件,并且复选框根本不会更改状态。

以下是我的容器、操作和化简器文件的链接:

1) 容器:https://gist.github.com/ghoshabhi/ba0feafdb58535150335f6d847e4f562

2) 操作:https://gist.github.com/ghoshabhi/eadec3dd7701afeaac72fd8afb71b94a

3) reducer :https://gist.github.com/ghoshabhi/7233e7d5143c4b9d8108c5ebb936d60c


欢迎提供任何帮助、建议或替代方法。

谢谢!

最佳答案

嗯,你的问题与react或redux无关,而是与纯html有关。如果您包含任何值(包括 false)的checked属性,它将呈现checked。因此,如果您的复选框应重新显示为未选中状态,则必须完全省略选中属性。

参见:this answer for more details

关于reactjs - 复选框状态不会根据 redux 状态而改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44488685/

相关文章:

javascript - 当用户从 React 的下拉列表中选择一个选项时如何启用另一个输入字段

reactjs - 如何检查功能组件中的组件是否已卸载?

javascript - 如何使用 jQuery 和复选框添加 url 参数末尾?

jquery - 启用嵌套在禁用的 jQuery 移动复选框中的 <span>

angular - 我应该在每个路由器导航上重置我的 redux 存储吗?

javascript - 转换 React 项目时出现 Typescript 错误

javascript - react-hot-loader 在 create-react-app 中的 styled-components css 发生变化后不更新

javascript - Meteor:将复选框(作为 bool 值)插入到子架构中 (aldeed2)

reactjs - 在 redux-form 中,如何将输入的值限制在一个范围内?

javascript - react 视频渲染