gpt4 book ai didi

reactjs - React Redux - this.props.actions.fetchPosts 不是函数

转载 作者:行者123 更新时间:2023-12-02 08:17:47 26 4
gpt4 key购买 nike

我在从我的组件调用异步操作时遇到问题,我想我做了所有工作所需的事情,但似乎没有,我使用了:

mapDispatchToProps



我回来了

actions: bindActionCreators(fetchPosts, dispatch)



我连接它。

在所有这些事情之后,我尝试在我的组件中调用此操作 -

this.props.actions.fetchPosts()



结果我在控制台中收到此错误 -

this.props.actions.fetchPosts is not a function



enter image description here

我无法理解它有什么问题,因为我做了所有事情,这里是完整的来源:

成分
import React, { Component } from 'react';
import { Link } from 'react-router';
import styles from './Home.css';
import { fetchPosts } from '../actions/counter';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';


class Home extends Component {

constructor(props) {
super(props)
}
render() {
return (
<div>
<div className="container">
<div className="banner_animated">
<p> dadasda</p>
</div>
</div>
<div className="container-fluid">
<div className="center">
<input type="text"/>
<button className="btn-2 btn-2a btn" onClick={this.props.actions.fetchPosts()}>Button</button>
</div>
</div>

</div>
);
}
}
function mapStateToProps(state) {
return state
}
function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators(fetchPosts, dispatch)
};
}

export default connect(mapStateToProps, mapDispatchToProps)(Home);

行动
import { FETCHING_WIN_RATES, FETCHED_WIN_RATES } from '../const';
import { firebaseDb } from './firebase';

const ref = firebaseDb.ref("win_rate");

function fetchingWinRates() {
return {
type: FETCHING_WIN_RATES
};
}

function fetchedWinRates(winRates) {
return {
type: FETCHED_WIN_RATES,
winRates
};
}
// win rate champions
export function fetchPosts() {
return dispatch => {
dispatch(fetchingWinRates());
ref.on("value", function(snapshot) {
dispatch(fetchedWinRates(snapshot));
console.log(snapshot.val());
}, function (errorObject) {
console.log("The read failed: " + errorObject.code);
});
}
}

如果您需要更多文件来帮助我,请写信给我,谢谢。

最佳答案

如果您将函数传递给 bindActionCreators ,它将返回一个函数。请参阅 bindActionCreators 的文档这里(在 返回 部分):http://redux.js.org/docs/api/bindActionCreators.html .

您正在有效地分配 this.props.action = fetchPosts在这里,意味着你会像这样调用 fetchPosts:this.props.action() .

如果您想通过 this.props.actions.fetchPosts 访问,您需要执行以下操作:

function mapDispatchToProps(dispatch) {
return {
actions: bindActionCreators({ fetchPosts }, dispatch)
};
}

注意速记 { fetchPosts }{ fetchPosts: fetchPosts } 相同.

关于reactjs - React Redux - this.props.actions.fetchPosts 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com