RNの例外TypeError:_this3.setStateは関数ではありません

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/DeMonliuhui/article/details/102742607

問題

TypeError: _this3.setState is not a function
    at E:\ITCode\ReactNative\DailyStory\src\views\main\bill\billSearch\index.tsx:72
    at tryCallOne (E:\ITCode\ReactNative\DailyStory\node_modules\promise\setimmediate\core.js:37)
    at E:\ITCode\ReactNative\DailyStory\node_modules\promise\setimmediate\core.js:123
    at E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\Core\Timers\JSTimers.js:289
    at _callTimer (E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\Core\Timers\JSTimers.js:146)
    at _callImmediatesPass (E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\Core\Timers\JSTimers.js:194)
    at Object.callImmediates (E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\Core\Timers\JSTimers.js:458)
    at MessageQueue.__callImmediates (E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:366)
    at E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:135
    at MessageQueue.__guard (E:\ITCode\ReactNative\DailyStory\node_modules\react-native\Libraries\BatchedBridge\MessageQueue.js:343)

それの使用の選択結果を得るためには、グローバルコールを容易にするためにセレクタアセンブリを使用して、機能をカプセル化しPromiseた値によってコールバック。
次に、コールバック関数this.setState、変数の値を変更するには、エラー上記のように、呼び出し元のコードは次の通りです。

_showDatePicker() {
    //封装了子组件的函数
    TimeUtils.showDatePicker()
      .then((date: string) => {
        this.setState({date: date}); //报错地方
        this.initData();
      })
      .catch(error => {
        console.log(error);
      });
  }

   
    onPress={this._showDatePicker}  //点击调用函数

理由:

これは、問題を指しています。TimeUtils.showDatePicker()この関数は、サブアセンブリの値が返され得て、親コンポーネントの内部状態を変更する必要があります。そして、これはむしろ親コンポーネントよりも、サブコンポーネントを意味し、それはこのエラーを報告します。

ソリューション:

関数に渡されたプラスバインド

 onPress={this._showDatePicker.bind(this)}

参照

https://blog.csdn.net/ling_du/article/details/99840430

おすすめ

転載: blog.csdn.net/DeMonliuhui/article/details/102742607