サイドバーがある場所にダッシュボードを作成し、そのサイドバーが状態を変更します。ここで状態に基づいてコンポーネントを動的に表示する方法
は、私はそれを行う方法である
私のshowPage:
showPage(page) {
switch (page) {
case 'feeds':
return <HelpPage />;
case 'messages':
return <MessagesPage />;
case 'projects':
return <ProjectsPage />;
case 'support':
return <SupportPage />;
case 'about':
return <AboutPage />;
default:
return <DialogPage />;
}
}
レンダリング私の方法:私はページを切り替える方法
:
私は要素を呼び出す方法handleClick(page) {
this.props.pageSwitcher(page);
}
...
<ListItem
primaryText="Feeds"
onClick={() => this.handleClick("feeds")} />
:
<Col xs={6} sm={6} md={6} lg={8}>
{
this.showPage(page)
}
</Col>
私のアクション:非常に開始時に
export function pageSwitcher(page = '') {
let payload = {};
switch (page) {
case 'feeds':
payload = {
type: types.SHOW_HELPS_FEED,
page,
};
break;
case 'messages':
payload = {
type: types.SHOW_INBOX,
page,
};
break;
case 'projects':
payload = {
types: types.SHOW_PROJECTS,
page,
};
break;
case 'support':
payload = {
types: types.SHOW_SUPPORT,
page,
};
break;
case 'about':
payload = {
types: types.SHOW_ABOUT,
page,
};
break;
default:
payload = {
types: '',
page,
};
}
return payload;
}
、それはデフォルトのコンポーネント<DialogPage />
をロードします。しかし、フィードListItem
をクリックすると、<DialogPage />
は<HelpPage />
に置き換えられません。しかし、私はHelpPage
のcomponentWillMount
と呼ばれるReduxデバッグツールで見ることができます。
どのように状態に基づいてコンポーネントを動的に表示できますか?
ありがとうございます!
EDIT: 私のshowPage
はコンポーネントを返すだけですが、コンテナを返すと何も表示されません。これは、アクションを呼び出すcomponentWillMount
があり、ダッシュボードの以前の状態が置き換えられているためです。
import * as types from '../actions/actionTypes';
export default function helpsReducer(state = {
isFetching: false,
items: [],
}, action) {
switch (action.type) {
case types.HELPS_FEED_REQUEST:
return Object.assign({}, state, {
isFetching: true,
});
case types.HELPS_FEED_SUCCESS:
return Object.assign({}, state, {
isFetching: false,
items: [
...state.items,
...action.items,
],
});
default:
return state;
}
}
あなたはそれが重要十分な詳細情報を提供していないように見えます。グリッドとレンダリングされたアイテムのほとんどを取り除き、代わりにpageSwitcherのようなものを挿入します(https://medium.com/@dan_abramov/asking-good-questions-421f08ee7e5c#.w1rhnxu9bを参照)。また、jsbinあなたのコードの最小限のバージョンで、他の人があなたを助けるのを助けることができます。 –
pageSwitcherメソッドがある親コンポーネントを追加 –
@GoshaArinich私の質問が更新されました。私は示唆したことをしましたが、明らかにComponent以外は何も表示しません。これはコンテナに切り替えるとダッシュボードの状態が再び空になるため –