免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
問題
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)}