Hier ist der Code:Beim Rendern der Listview, warum wurde der Wert in früheren <TextInput/> gehalten?
var FAKE_DATA = [
{
type: 0,
},
{
type: 1,
},]
var FAKE_DATA_2 = [
{
type: 0,
},
{
type: 1,
},
{
type: 2,
},]
export default class testpage extends React.Component {
constructor(props) {
super(props)
let listData = new ListView.DataSource({
rowHasChanged: (p1, p2) => {
p1 !== p2
},
});
this.state = {
data: listData.cloneWithRows(FAKE_DATA)
}
};
render() {
return (
<View style={{ flex: 1 }}>
<ListView
style={{ flex: 1 }}
dataSource={this.state.data}
renderRow={this.renderRow} />
<TouchableOpacity
onPress={() => {
this.setState({
data: this.state.data.cloneWithRows(FAKE_DATA_2)
})
} }
style={{ height: 40, backgroundColor: 'green' }}
/>
</View>
);
}
renderRow(data) {
return (
<TextInput style={{ height: 40, }} />
)
}}
Und wenn ich etwas in TextInput- eingegeben und auf die Schaltfläche klicken, wurde die Listenansicht aktualisiert, aber der Wert in TextInput- bleibt in neuen textinput.Is es Fehler oder einfach nur so, wie es funktioniert? Wie man es vermeidet?
Dank sein! Es scheint, dass RN das Objekt zur Wiederverwendung zwischenspeichern? Was also, wenn ich ein Objekt freigeben möchte? – user6594603