2016-12-08 3 views
2

私は不変性と還元性を扱っていましたが、私は重大ではない問題に直面していますが、解決策があればそれは素晴らしいことになります。答えはばかげているかもしれませんが、私はESの初心者なので、私たちはどのように達成できるのか考えています。メソッドから戻り値を取得するオブジェクトをどのように構造化するのですか?

以下

は私の減速である:

以下
import Immutable from 'immutable'; 
import { TODOYO } from '../constants/action-types'; 

const initialState = Immutable.Map({ 
    message: null, 
}); 

export default function todos(state = initialState, action) { 
    switch (action.type) { 
    case TODOYO: 
     return state.set('message', action.payload); 
    default: 
     return state; 
    } 
} 

は、コンポーネントに私のmapStateToProps機能である:

function mapStateToProps(state) { 
    const message = state.todos.get('message'); 

    return { 
    message, 
    }; 
} 

私はメッセージを取得するためにstateをdestructureできますか?

私はこのような何かを考えていた:

const { 
    todos: { 
    message: get('message') 
    } 
} = state; 

間違っています。メッセージを取得する方法はありますか?

答えて

2

messageが状態のキーの1つでない場合は、default parameters構文を使用してこれを行うことができます。状態のプロパティとしてメッセージが存在する場合、デフォルトはオーバーライドされます。したがって、注意して使用してください。

function mapStateToProps({ todos, message = todos.get('message') }) { 
    return { 
    message, 
    }; 
} 

そして、あなたはまた、矢印関数にmapStateToPropsを短縮することができます。

const mapStateToProps = ({ todos, message = todos.get('message') }) => ({ 
    message 
}); 
+0

興味深いです。ありがとう。 –

関連する問題