【问题标题】:React Container not Re-Rending after Redux State ChangeRedux 状态更改后 React Container 不重新渲染
【发布时间】:2017-03-26 19:49:10
【问题描述】:

我正在研究 Redux 和 React,但遇到了问题。我正在制作书单,点击书单后,您将看到有关该书的详细信息。

当我选择一本书时,动作被正确处理并且状态改变了。

// reducer_active_book.js
export default function(state = null, action) {
    switch(action.type) {
        case "BOOK_SELECTED":
            console.log("Current State [Reducer]: ",state);
            console.log("New State [Reducer]: ",action.payload);
            return action.payload;
    }

    return state;   
}

当我点击一本书时,我会在控制台中看到它(所以我知道上面的功能正常)

我还从上面的日志中知道我的容器知道,因为正在调用 mapStateToProps。

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

class BookDetail extends Component {
    render() {
        if(!this.props.book) {
            return <div>Select a Book.</div>;
        }

        return (
            <div>
                <h3>Details For:</h3>
                <div>{this.props.book.title}</div>
            </div>
        );
    }
}

function mapStateToProps(state) {
    console.log("mapStateToProps called (connect)");
    return {book: state.activeBook};
}

export default connect(mapStateToProps)(BookDetail);

组合减速器:

import { combineReducers } from 'redux';
import BooksReducer from "./reducer_books";
import ActiveBook from  "./reducer_active_book";
const rootReducer = combineReducers({
  books: BooksReducer,
  ActiveBook: ActiveBook
});

export default rootReducer;

在最初的“选择一本书”之后,该项目永远不会重新呈现。这可能是什么原因造成的?

【问题讨论】:

    标签: javascript node.js reactjs ecmascript-6 redux


    【解决方案1】:

    你的状态有一个ActiveBook 而不是activeBook 属性:

    function mapStateToProps(state) {
        console.log("mapStateToProps called (connect)");
        return {book: state.ActiveBook};
    }
    

    【讨论】:

    • 这很尴尬,我的下午去了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2018-12-12
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多