React native 如何从另一个独立屏幕更新不同屏幕?

React native 如何从另一个独立屏幕更新不同屏幕?,react-native,React Native,我有一个带有导航栏的应用程序,有两个屏幕。 当我在屏幕/组件1上应用函数时,我希望在第二个屏幕中渲染或触发更改 有没有办法在回车时重新渲染屏幕或更新另一个屏幕的状态 第一部分: 导出默认类主屏幕扩展React.Component{ 建造师{ 超级的 } _onPress{ 试一试{ 等待AsyncStorage.setItem'value','changed value'; }捕捉错误{ console.logerror.message; } console.logsaved:+this.st

我有一个带有导航栏的应用程序,有两个屏幕。 当我在屏幕/组件1上应用函数时,我希望在第二个屏幕中渲染或触发更改

有没有办法在回车时重新渲染屏幕或更新另一个屏幕的状态

第一部分:

导出默认类主屏幕扩展React.Component{ 建造师{ 超级的 } _onPress{ 试一试{ 等待AsyncStorage.setItem'value','changed value'; }捕捉错误{ console.logerror.message; } console.logsaved:+this.state.userName } 渲染{ 回来 这个。_onPress}> } 构成部分2:

导出默认类SecondScreen扩展React.Component{ 建造师{ 超级的 this.state={some:} } 异步getValue{ 让receivedvalue=; 试一试{ let promise=Wait AsyncStorage.getItem'value'| | |'cheeseCake'; promise.thenvalue=>ReceivedValue=value }捕捉错误{ //检索数据时出错 console.logerror.message; } 返回接收值 } 渲染{ var value=this.getValue; 回来 此处更改的值:{VALUE} this.setStateprev=>{some:'Thing'}}> } 当我按下屏幕1主屏幕上的按钮时,值被保存。 但只有当我通过按键触发状态改变时,它才会显示在secont屏幕上

当我通过导航栏访问屏幕时,如何渲染屏幕? 您尝试过EventEmitter吗

使用此自定义事件侦听器:

例如:


你能提供一个gif的例子让我很容易理解吗…@Tanveerbyn我有一个gif。按下按钮后你如何进入屏幕2?理想情况下,你应该将该值作为道具传递给家长,这样它可以更新孩子。您是否尝试过使用React的任何生命周期组件?您可以尝试使用componentDidUpdate和更新某些状态来触发重新渲染这里有导航栏@UmairAhmed第一项是屏幕1第二项是屏幕2。更新时也不会发生任何事情。我什么都试过了。一旦导航栏获得屏幕,它将呈现它们。然后他们一直呆着直到状态改变。
import { EventRegister } from 'react-native-event-listeners'

/*
 * RECEIVER COMPONENT
 */
class Receiver extends PureComponent {
    constructor(props) {
        super(props)

        this.state = {
            data: 'no data',
        }
    }

    componentWillMount() {
        this.listener = EventRegister.addEventListener('myCustomEvent', (data) => {
            this.setState({
                data,
            })
        })
    }

    componentWillUnmount() {
        EventRegister.removeEventListener(this.listener)
    }

    render() {
        return <Text>{this.state.data}</Text>
    }
}

/*
 * SENDER COMPONENT
 */
const Sender = (props) => (
    <TouchableHighlight
        onPress={() => {
            EventRegister.emit('myCustomEvent', 'it works!!!')
        })
    ><Text>Send Event</Text></TouchableHighlight>
)