【问题标题】:this.props.getUser is not a function mapDispatchToProps - React Native, Reduxthis.props.getUser 不是函数 mapDispatchToProps - React Native,Redux
【发布时间】:2020-03-09 12:16:13
【问题描述】:

因为我刚刚在我的 react native 项目中实现了 Redux,所以我创建了我的第一个 reducer、action 和 store,但是它不起作用。

componentDidMount

this.props.getUser(user());

console.log('Props: ', this.props);

console.log:

Props:  {screenProps: undefined, navigation: {…}}

调度员

const mapDispatchToProps = (dispatch) => {
    return ({
        getUser: (data) => dispatch(data)
    })
}
export default connect(mapStateToProps, mapDispatchToProps)(homeNav);

用户功能

export function user () {
    return dispatch => {
        console.log(21312312);
        dispatch(request({}))
    }

    function request (user) {
        return { type: GET_USER_REQUEST, user }
    }

    function success (user) {
        return { type: GET_USER_SUCCESS, user }
    }

    function failure (error) {
        return { type: GET_USER_FAILURE, error }
    }
}

请查看下面的截图来查看 homeNav 是如何导入的

【问题讨论】:

  • 你是如何导入homeNav组件的?
  • @FernandoMontoya 能否请您查看问题末尾的屏幕截图?
  • 你可以在createStackNavigator之前尝试连接Redux
  • 我刚刚尝试将 mapStateToProps 和 mapDispatchToProps 放在 createStackNavigator 之前,但连接线仍然放在最后。因为 homeNav 不会在功能之前无法访问,它仍然无法正常工作

标签: reactjs react-native redux react-redux


【解决方案1】:

尝试更改此getUser: (data) => dispatch(data)

getUser: (data) => dispatch(user(data))

还有这个this.props.getUser(user());

this.props.getUser(data);

还需要像下面这样包装你的应用程序

import { Provider } from 'react-redux';
import Route from './route';
let store = createStore(Reducers);

class App extends Component {
    render() {
        return (
            <Provider store={store}>
                <Route />}
        </Provider>
        );
    }
}

export default App;

【讨论】:

  • 还需要在您的 App.js 中将您的路由和应用与 Provider 包装为 import { Provider } from 'react-redux'; import Route from './route'; let store = createStore(Reducers); class App extends Component { render() { return ( &lt;Provider store={store}&gt; &lt;Route /&gt;} &lt;/Provider&gt; ); } } export default App;
  • 它已经包装好了,它在正常页面中的工作方式不同......我认为 createStackNavigator &lt;Provider store={store}&gt;&lt;App /&gt;&lt;/Provider&gt; 有问题
猜你喜欢
  • 2018-10-22
  • 2020-02-11
  • 1970-01-01
  • 2021-05-05
  • 1970-01-01
  • 2021-10-19
  • 2018-06-01
  • 2017-12-05
  • 1970-01-01
相关资源
最近更新 更多