Reactjs 复选框状态未根据重复使用状态更改

Reactjs 复选框状态未根据重复使用状态更改,reactjs,checkbox,redux,react-redux,Reactjs,Checkbox,Redux,React Redux,我有一个哑组件,它接收一堆对象并呈现一个复选框。哑组件的外观如下所示: // imports const FilterList = ({ filterTitle, filters, onFilterChange }) => { console.log(`FILTERS: ${JSON.stringify(filters)}`); return ( <div> <Header colorIndex="light-2" size="small"&

我有一个哑组件,它接收一堆对象并呈现一个复选框。哑组件的外观如下所示:

// 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事件,并相应地切换它们的选中状态。现在,我正确地处理onChange事件,因为我看到checked属性正确地反映在应用程序状态中

我不知道会发生什么,但存储中的更改不会反映或传播回哑组件,并且复选框根本不会更改状态

以下是指向我的容器、操作和减速器文件的链接:

1个集装箱:

2行动:

3减速器:

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


谢谢大家!

嗯,您的问题与react或redux无关,而是与普通html有关。如果包含任何值(包括false)的checked属性,它将呈现checked。所以,如果您的复选框应该被重新选中,您必须完全忽略checked属性


请看:

非常感谢!检查的有趣属性是:我注意到一件奇怪的事情,在我的容器中,因为我正在通过redux更改应用程序状态,为什么我的React生命周期挂钩没有触发?我试过shouldComponentUpdate和componentWillReceiveProps,但都没有成功!