reactjs - React-Redux:在 React 组件中使用操作创建器

标签 reactjs redux react-redux

我是 React/Redux 新手,感谢您的帮助。我正在参加有关此主题的 Udemy 类(class)。类(class)讲师创建了一个这样的组件。

import React, { Component } from 'react';
import { connect } from 'react-redux';

import { fetchUser } from '../actions';

class User extends Component {
    componentDidMount(){
        this.props.fetchUser(this.props.userId);
    }

    render(){
        const { user } = this.props;

        if(!user) return null;

        return(
            <div className="header"> User Info: {user.name}</div>
        );
    }
}

const mapStateToProps = (state, ownProps) => {
    return { user: state.users.find( user => user.id === ownProps.userId)};
};

export default connect(mapStateToProps, { fetchUser })(User)

我的问题:为什么在componentDidMount()里面他的前缀是fetchUsers()this.props ? 事实并非如此,他正在通过fetchUsers()作为来自父组件的 Prop 。这就是父级使用此组件的方式 <User userId={post.userId}/>

注意:此代码有效

最佳答案

这是因为这一行:

导出默认连接(mapStateToProps, { fetchUser })(User)

connect 的第二个参数称为 mapDispatchToProps,它将操作添加到 props

来自docs :

connect can accept an argument called mapDispatchToProps, which lets you create functions that dispatch when called, and pass those functions as props to your component.

const mapDispatchToProps = dispatch => {
  return {
    // dispatching plain actions
    increment: () => dispatch({ type: 'INCREMENT' }),
    decrement: () => dispatch({ type: 'DECREMENT' }),
    reset: () => dispatch({ type: 'RESET' })
  }
}

您的代码使用“对象速记”形式。

关于reactjs - React-Redux:在 React 组件中使用操作创建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696368/

相关文章:

css - React JS react-bootstrap PopOver 使用 className 更改不同按钮的背景颜色

javascript - 使用 AJAX 向 API 发出请求时遇到问题

reactjs - 在 Typescript 项目中实现 react-router PrivateRoute

javascript - 如何在redux初始状态下动态添加产品?

redux - 是否可以在切片 reducer 中重新分配整个状态(使用 Redux ToolKit)?

javascript - 条件渲染不显示 - ReactJS

reactjs - 检查 React 中嵌套路由的 router.isActive

react-native - 为什么没有使用 React Native Router Flux + Redux 触发 React Native Drawer?

javascript - react Redux : Posting Records partly work with onclick function

reactjs - 当应用程序外部的数据库上的数据更改时如何刷新 React Redux 应用程序