我在componentDidMount里面获取了数据,想存入redux,然而一直执行

#1

之前使用vue,现在采用react,这种情况怎么使用啊

#2

一直 did mount 触发很可能是组件外面调用的时候写法有问题. 正常渲染一次生成了, 都是走到 did update 那个钩子.

#3

往redux里面存放数据有两种方法,一种是通过dispath调用时候传参形式,一种是在定义action行为时候进行请求,请求完成后挂到state里面再向下进行传递,即在js代码中componentDidMount发起dispath,然后通过this.props就可以拿到了。建议好好看一下阮一峰老师的例子再写,很基础的问题,没有其它意思,多看看别人代码,之后还有redux的分文件夹,也可以参考下别人的再自己写,这块还是有点乱的。

#4

redux我是分了文件夹的,这里是用了react-redux,将state和action通过connect传入了组件,上面出现的问题我也也解决了。是我使用了路由异步打包方式引入,在compontDidMount中异步获取的数据就会一直存入redux

#5

应该是外部某个组件导致的。类似于:

<div key={news.length}>
  <NewsComponent/>
</div>

或者

if (isLoading) {return <Loading/>}
else return <NewsComponent/>;

这些写法都在store的修改的时候引起销毁并创兴创建节点而不是更新节点。
你在外部的组件上一个个的加componentDidMount(){console.log(“mount”)}
看看到底是哪个组件的锅。

#6

我怀疑你是不是用了key放在组件中,然后key的值又绑定了一个变量,以至于每次都销毁组件,然后又创造新的组件。

#7

你的props.add这个函数应该更新了redux的值然后引起上层组件重新渲染,然后上层的组件重新渲染后导致此组件重新创建了,检查一下是不是上层组件里边是不是把此组件定义到render中了,或者定义成了函数,以至于每次刷新产生的都是新的实例。