2017-08-13 7 views
1

私は状態をマップしたいが、その状態(状態の名前は "task"、それは "timesheet"私のページ内でアクション作成者が(ボタンをクリックして)トリガーされていない限り、まだ定義されていません。しかし、私はすでにjsx内にtimesheet.task.mapを定義しているので、ページを読み込むことができず、 "未定義のプロパティマップを読み込めません"というエラーが表示されます。 code ここからわかるように、 'select'オプションのリストは、イベントがトリガーされたときに呼び出される状態からマッピングされます(ページがレンダリングされるときに未定義ですが、ページはロードされません)。ページが最初に読み込まれるときにtimesheet.taskは未定義です状態を初期化するには、ページが最初にレンダリングされたときに未定義を解決するために反応します。

これを修正する方法はありますか?私は国家を初期化しようと考えていたが、それをどうやって行うのか分からない。ありがとう!

答えて

0

非常に一般的な状況です。あなたのrender()の上部にある - その値が有効であるかどう単に確認するために、条件を追加します。..何かのように:あなたのページのレイアウトに応じて、同じように注入するための小さなコンポーネントを作成することもできます

if (!this.state.timesheet.task) { 
    return <p> waiting for my value </p> // add any generic component to here that would await your value 
} 

あなたの値が入力されるのを条件として条件付きです。

+0

申し訳ありませんが、別のアクション作成者が呼び出されたときに自分自身の「ボタン」がレンダリングされるため、ロード時にページに無限の負荷を与えます(componentWillMount内に配置されます)。私はtimesheet.taskにデフォルト値を与えるコンストラクタを作成することを考えていましたが、私はそれをどのように書くのか分かりません。あなたは何か考えていますか? –

関連する問題