アクションをストアにディスパッチする前に、プロミスベースの関数を呼び出すとします。 問題は、コンポーネントを表示するときにのみ関数を呼び出すことです。私は、コンポーネントのオンとオフを切り替えるトグルアクションを使用します。ここでReactコンポーネントが表示されているかどうかを調べる
は、私のコードのサンプルです:
if (/*component is going to be displayed*/) {
init().then(function() {
store.dispatch(toggleSomething());
});
}
else {
store.dispatch(toggleSomething());
}
処置:
export const SomethingActions = {
TOGGLE_SOMETHING: 'TOGGLE_SOMETHING'
};
export function toggleSomething() {
return {
type: SomethingActions.TOGGLE_SOMETHING
};
}
リデューサー:リアクトコンポーネントの
export default function somethingState(state = defaultState, action) {
switch (action.type) {
case somethingActions.TOGGLE_SOMETHING
return Object.assign({}, state, { open: !state.open});
default:
return state;
}
}
一部:
Something.propTypes = {
display: React.PropTypes.bool.isRequired
};
function mapStateToProps(state, ownProps) {
return {
display: state.something.open
};
}
私は基本的に上記のコンポーネントのオープン/表示の値、またはコンポーネントが表示されているかどうかを知る別の方法を知りたいと思っています。 レンダリング機能を汚染したり、ディスパッチを呼び出すたびに変化するブールを保存したりしたくありません。 これを行う方法はありますか?
コンポーネントを切り替えるたびにディスパッチが行われますか?コンポーネントがレンダリングされるのは初めてですか? –
コンポーネントがトグルされるたびに発生します –