0
import React from 'react';
import {View} from 'react-native';
import Button from 'react-native-button';
const gData = [{counter: 0}];
export default class App extends React.Component {
constructor(props)
{
super(props);
this.state = {data: {}};
console.log("Constructor: ", this.state.data);
}
_handlePress()
{
console.log("Pressed Button")
gData[0].counter += 1;
console.log("Before setState: ", gData);
this.setState({data: gData}, console.log("After setState: ", this.state.data));
}
render() {
return (
<View style={{flex:1, justifyContent: 'center',}}>
<Button
onPress={() => this._handlePress()}>
Press Me!
</Button>
</View>
);
}
}
こんにちは、 状態を更新していない私は、プレス時に、それはオブジェクト内のカウンタを更新し、オブジェクトを保存する必要があることを、画面上のボタンを作成し、反応し、ネイティブアプリケーションのための、この単純なコードを持っています状態にあります。私はアプリを実行し、ボタンを押すと、しかし、私は私のログにこれを取得する:リアクト - ネイティブSETSTATEが非同期
11時19分43秒PM:実行x86_64版
11時19分43秒PMのために作成したAndroid SDKのアプリ:コンストラクタ:{ }
11時23分20秒PM:押されたボタン
11時23分20秒PM:SETSTATE前:[{ "カウンター":1}]
11時23分20秒PM:SETSTATE後:{}
だから何らかの理由で状態が更新されない。誰がそれが事実であるかを知っていますか?
あなたはそれではなく、状態を更新して行われた後ですぐに呼び出されることのようにconsole.log呼び出す場合、匿名関数にそれを入れてみてくださいかなり確信して
あなたは正しいです!ありがとう!彼らは、更新が完了すると、第2引数がコールバックであると常に言います。したがって、ラップするために無名関数が必要であることは間違いありません。少なくとも自分のような初心者なら... – palmp