State.data React Native 的导出功能没有更新?
State.data not updated in export function in react native?
我有一个从 firebase 数据库检索数据并更新状态对象的基本组件。然后我尝试将 this.state.data 传递给导出函数以查看数据库中的数据,但它抛出了数据的未定义错误(因为数据中没有任何内容)。
/**
========= LaunchScreen ==========
**/
export default class LaunchScreen extends PureComponent<*, State> {
constructor(props) {
super(props);
this.state = { data: [] };
this.personsRef = firbaseApp.database().ref().child('Persons');
this.listenForPersons = this.listenForPersons.bind(this);
}
componentDidMount = () => { this.listenForPersons(this.personsRef); };
listenForPersons = (personsRef) => {
personsRef.on('value', (snap) => {
var persons = [];
snap.forEach(child => {
persons.push({
name: child.val().name,
_key: child.key
})
});
this.setState({data: persons});
});
};
_renderScene = ({ route }) => {
console.log(this.state.data);
switch (route.key) {
case '1':return ( <SimplePage state={this.state} /> );
case '2': return ( <SimplePage state={this.state} /> );
default: return null;
}
};
render() {
return (
<TabViewAnimated renderScene={this._renderScene} />
);
}
}
简单页面
export default function CurrentStateIndicator({ state, style }: *) {
return (
<View>
<View>
<Text>Current route is: {state.routes[state.index].title || state.index}</Text>
</View>
<List>
<FlatList
data={state.data}
renderItem={({ person }) => (
<ListItem
title={person.name}
/>
)}
/>
</List>
</View>
);
}
但是显然,state.data 在 SimplePage 中未定义。
任何人都可以帮助我如何将更新的 state.data 传递给 simplePage。
谢谢
listenForPersons = (personsRef) => {
personsRef.onSnapshot( (snap) => {
var persons = [];
snap.forEach(child => {
persons.push({
name: child.val().name,
_key: child.key
})
});
this.setState({data: persons});
});
};
我有一个从 firebase 数据库检索数据并更新状态对象的基本组件。然后我尝试将 this.state.data 传递给导出函数以查看数据库中的数据,但它抛出了数据的未定义错误(因为数据中没有任何内容)。
/**
========= LaunchScreen ==========
**/
export default class LaunchScreen extends PureComponent<*, State> {
constructor(props) {
super(props);
this.state = { data: [] };
this.personsRef = firbaseApp.database().ref().child('Persons');
this.listenForPersons = this.listenForPersons.bind(this);
}
componentDidMount = () => { this.listenForPersons(this.personsRef); };
listenForPersons = (personsRef) => {
personsRef.on('value', (snap) => {
var persons = [];
snap.forEach(child => {
persons.push({
name: child.val().name,
_key: child.key
})
});
this.setState({data: persons});
});
};
_renderScene = ({ route }) => {
console.log(this.state.data);
switch (route.key) {
case '1':return ( <SimplePage state={this.state} /> );
case '2': return ( <SimplePage state={this.state} /> );
default: return null;
}
};
render() {
return (
<TabViewAnimated renderScene={this._renderScene} />
);
}
}
简单页面
export default function CurrentStateIndicator({ state, style }: *) {
return (
<View>
<View>
<Text>Current route is: {state.routes[state.index].title || state.index}</Text>
</View>
<List>
<FlatList
data={state.data}
renderItem={({ person }) => (
<ListItem
title={person.name}
/>
)}
/>
</List>
</View>
);
}
但是显然,state.data 在 SimplePage 中未定义。
任何人都可以帮助我如何将更新的 state.data 传递给 simplePage。
谢谢
listenForPersons = (personsRef) => {
personsRef.onSnapshot( (snap) => {
var persons = [];
snap.forEach(child => {
persons.push({
name: child.val().name,
_key: child.key
})
});
this.setState({data: persons});
});
};