【问题标题】:Checkbox state not changing based on redux state复选框状态不会基于 redux 状态而改变
【发布时间】:2017-11-13 07:05:01
【问题描述】:

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

// 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;

现在,filters 是一个对象数组,看起来像这样:

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 正确反映在应用程序状态中。

我不明白会发生什么,但商店中的更改不会反映或传播回哑组件,并且复选框根本不会更改状态。

这里是我的容器、动作和reducer文件的链接:

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

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

3) 减速机:https://gist.github.com/ghoshabhi/7233e7d5143c4b9d8108c5ebb936d60c


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

谢谢!

【问题讨论】:

    标签: reactjs checkbox redux react-redux


    【解决方案1】:

    好吧,您的问题与 react 或 redux 无关,而是与纯 html 相关。如果您包含任何值的选中属性,包括 false,它将呈现选中状态。因此,如果您的复选框应该被取消选中,您必须完全省略选中的属性。

    见:this answer for more details

    【讨论】:

    • 非常感谢!有趣的属性检查结果是:)
    • 我注意到的一件奇怪的事情是,在我的容器中,由于我正在更改应用程序状态(通过 redux),为什么我的 React 生命周期挂钩没有触发?我试过shouldComponentUpdatecomponentWillReceiveProps 都没有成功!
    猜你喜欢
    • 2019-01-30
    • 2013-08-30
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多