///我正在使用以下代码将一个屏幕导航到另一个屏幕,即主页。 但是在浏览主页时,我必须刷新页面..reload。目前,当我回到主屏幕时,没有生命周期方法被呼叫。特别是UserAvatar组件,我必须刷新或调用。 请建议
<View style={{textTransform: 'lowercase'}}><YellowBtn label="Go to
Dashboard"
OnClick={this._redirectCustomerView}/></View>
_redirectCustomerView = () => {
this.props.navigation.navigate('UserHome');
};
//以下是主页
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = { title: 'Hello!', hasFooterPermission: false };
console.log("Valuueeeeeee");
}
async componentDidMount() {
const homeFooter = await hasPermission('clm.360D.fe.restrictedView.allowed');
this.setState({
hasFooterPermission: homeFooter
})
}
onSearchClick = () => {
this.props.navigation.navigate('SubscriberSearch');
};
componentWillMount(){
console.log(" Home page dataaaa");
}
render() {
return (
<View>
<ImageBackground source={BG} style={{ width: '100%', height: '100%' }} resizeMode="cover">
<View style={{ paddingTop: 5 , alignContent:'space-between',flexDirection:'row'}}>
<View style={{alignSelf: 'flex-start', flex:1}}>
<UserAvatar navigationProps={this.props.navigation} avatarSize={40} isTouchable={true}/>
</View>
{/* <View style={{alignSelf: 'flex-end'}}>
<Icon
name="bell-outline"
type="MaterialCommunityIcons"
style={{ color: '#FFFFFF' }}
onPress={() => Toastr.showToast('No new notifications!', 3000)}
/>
</View> */}
</View>
答案 0 :(得分:0)
知道是否必须刷新页面不是主页的职责。建议的方法是,当满足重新加载条件(头像更新,用户属性更改等)时,调用实体应转到主页,并在需要时请求重新加载(即window.location.reload(true)
)
答案 1 :(得分:0)
如果您通过导航道具在首页上添加了侦听器,则可以在即将发生到首页或从首页的转换(“ willFocus” /“ willBlur”)或完成转换时调用函数。 'didFocus'/'didBlur')。 这对我有用:
componentDidMount(){
this.props.navigation.addListener('willFocus',this.load)
}
load = () => {
//whatever you want to do when the page loads
}
此处的文档:https://reactnavigation.org/docs/en/navigation-prop.html
答案 2 :(得分:0)
使用推送而不是导航
this.props.navigation.push('UserHome');