Redux无法分配整数值

时间:2019-07-14 17:42:06

标签: reactjs redux react-redux

在CategoryFeed类中,我有类似以下内容:

filename

这是updateCurrentForum的样子:

class CategoryFeed extends Component {
...
componentDidMount() {
const {
      params,
      currentForum,
      updateCurrentForum,
    } = this.props;

    alert(params.fid);
    updateCurrentForum(params.fid);
    alert(currentForum);
}
...
export default connect(
  (state) => { return {
    currentForum: state.app.currentForum,
...
(dispatch) => { return {
    updateCurrentForum: (currentForum) => { dispatch(updateCurrentForum(currentForum)); },
...

在Reducer中,我的定义如下:

export const updateCurrentForum = (currentForum) => {
  alert("inside is " + currentForum);
  return {
    type: UPDATECURRENTFORUM,
    payload: currentForum,
  };
};

这是我期望的工作方式。

  1. 当加载CategoryFeed时,它会警告params.fid(假设params.fid = 1)。 params.fid实际上是我的主网址之后的附加字符串(例如,如果url为http://localhost/1,则params.fid为1)。
  2. 然后通过Redux将params.fid(= 1)的值存储到currentForum
  3. 通过将有效负载值设置为currentForum之后,然后尝试在componentDidMount()中警告currentForum的值。但是,它不会显示“ 1”,但是会显示“ undefined”。似乎redux无法将params.fid放入currentForum。

我该如何解决?

2 个答案:

答案 0 :(得分:2)

您将无法在currentForum中获得componentDidMount()的更新值。这是因为componentDidMount()仅在组件安装后运行。

更改componentDidMount()中的道具会导致组件重新渲染。因此,可以在render()componentDidUpdate()个周期中访问更新的值。

您可以将alertconsole.log移至render方法,您应该会看到更新后的值

答案 1 :(得分:1)

在组件插入DOM树之后,将调用

componentDidMount,并且您在其中调用的updateCurrentForum(params.fid)会更新currentForum,但此更改将被componentDidUpdate捕获。有关更多详细信息,您可以查看组件http://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/

的生命周期图

当前currentForum拥有

的价值
const {
  params,
  currentForum,
  updateCurrentForum,
} = this.props;

,当前可能未定义。尝试在道具中分配一些值,看看它是否从undefined变为您提供的value