-2
請看看在這個非常簡單的例子爲什麼RN使用的setState時,它的功能就像forceUpdate
'use strict';
var React = require('react-native');
var {
AppRegistry, Text, TextInput, View
} = React;
var bString = 'b init';
var Example = React.createClass({
getInitialState: function() {
return {
aString: 'a init',
cString: 'c init'
};
},
changedString: function(aEvent) {
bString = 'b changed';
this.state.cString = 'c changed';
this.setState((state) => {
return {
aString: 'a changed'
};
});
},
render: function() {
return (
<View style={{flex: 1}}>
<Text>
{this.state.aString}{'\r\n'}{bString}{'\r\n'}{this.state.cString}
</Text>
<Text onPress={this.changedString}>
Ppppppppppppppppppppp......press me
</Text>
</View>
);
},
});
AppRegistry.registerComponent('Project16N',() => Example);
我以爲只有aString
移動屏幕上時changedString
叫而被改變。但是當changedString
被調用時,aString
,bString
,CString
都發生了變化。那麼我們爲什麼要使用this.setState(balabala...)
?
爲什麼我們不使用this.forceUpdate
呢?
setState
和forceUpdate
之間的區別是什麼?
爲什麼我不應該直接在this.state上修改任何內容? – tennist