目前的 component 是從 props 取得整個 users 集合。
UserHeader component 看起來怪怪的,因為這個 component 的設計是只顯示一個使用者,不應該拿到所有使用者資料再從裡面找一筆出來。

為了只注入一筆 User 資料到 UserHeader,可以改 mapStateToProps 的實作

Commit

程式碼
import React, {Component} from "react";
import {connect} from 'react-redux'
import {fetchUser} from "../actions";

class UserHeader extends Component {

    componentDidMount() {
        this.props.fetchUser(this.props.userId)
    }

    render() {
        return <div>Author: {this.props.user?.name}</div>
    }
}

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

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

接下來看什麼

上一篇 / 下一篇
上一篇:redux - fetch user for each article 下一篇:redux - inject one user data to UserHeader
延伸閱讀
訂閱 RSS: 總經 · 技術