我想做的是在我设置的间隔函数中调度一个动作,而不是在获取初始道具时派遣一个动作,并将我的数据保存在商店中,以及如何从react app中从商店中获取该数据,这很简单,只需从动作表单动作文件中导入并像这样this.props.actionName()
进行调用,但是接下来我该如何做并如何从存储中获取数据,我们将状态映射到props下一步该如何完成呢?感谢我在这里要实现的功能
this.fetchCryptoData().then(data => {
var Keys = Object.keys(data.DISPLAY);
this.setState(
{
crypto_head_coins: Keys
},
() => {
// // this.props.update_array([]); // update_array() is my action i haven't imported it
let rate_updated = [true, true, true, true]; // i want my store updated_array data here
for (let i = 0; i < this.state.crypto_head_coins.length; i++) {
//my code here
// this.props.store.dispatch(update_rate_array(rate_updated)) //it says cant read property
// of dispatch of undefined
// i want to dispatch my action here not in getinitialprops
this.setState({ rate_updated });
}
);
});
答案 0 :(得分:1)
有时我使用NextJS,本质上与Create-React-App相同。
我刚刚注意到您的问题不包括'React-Redux',您需要安装/保存'React-Redux'和'Redux'才能使用连接/发送,等等。我有一个sample boilerplate on Github。
用于将其转换为动作的另一个缺少的部分可能是redux-thunk,用于处理承诺。(请先尝试不使用它。)
有关redux-thunk的更多信息,请参见此处。 https://github.com/reduxjs/redux-thunk
您两次设置状态(一次在另一个回调中),这将导致多次重新渲染。 (除非实施了ShouldComponentUpdate)可能要重新考虑此设计。
这样做之后,您可以简化调用它的行,就像下面使用destructing一样。
// this.props.store.dispatch(update_rate_array(rate_updated)) //it says cant read property
let update_rate_array = {this.props}
update_rate_array(rate_updated)
您应该实现MapDispatchToProps,以消除命名和调用过程中的某些复杂性。
我已经上传了some simple examples to Github,也有an identical related CodeSandbox。