2016-11-12 22 views
2

ReduxとReactに取り組んでおり、問題が発生しました。私は本のリストを作っています。あなたがその本のリストをクリックすると、その本の詳細が表示されます。Redux状態の変更後にReact Containerが再レンダリングされない

本を選択すると、その操作は正しく処理され、状態が変更されます。私は本を​​クリックすると

// 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; 
} 

、私はコンソールでこれを取得する(ので、私は知っている上で正しく機能している)私のコンテナが認識していることを

enter image description here

はまた、私は上記のログから知っています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; 

の項目が "ブックを選択して" 初期後に再レンダリングすることはありません。これを引き起こす原因は何ですか?

答えて

3

あなたの状態がActiveBookないactiveBook性質があります。これは恥ずかしいです

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

を、私の午後はそこに行きます – Hiyper

関連する問題