javascript - React Native - 不同JS文件之间的setState

标签 javascript reactjs react-native

我想将 setStateA 组件设置为 B 组件。 AB 是不同的 JS 文件。我尝试将 B 导入到 A 并访问 B 内的函数。还有将B中的函数设为静态,然后才发现静态函数没有实例,所以无法访问静态中的this

A.js

import B from '../B';
class A extends React.Component {
    ChangeBContent(){
        B.SetContent();
    }

    render(){
        return(
            <View>
                <SpeicalBtn onPress={()=> this.ChangeBContent()}/>
            </View>
        );
    }
}

module.exports = A;
AppRegistry.registerComponent('myApp', () => A);

B.js

class B extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            content:''
        }
    }

    SetContent(){
        this.setState({content:'123'});
    }

    render(){
        return(
            <View>
              <Text>{this.state.content}</Text>
            </View>
        );
    }
}

module.exports = B;
AppRegistry.registerComponent('myApp', () => B);

最佳答案

你可以做肮脏的把戏,但我认为你需要更干净的方法。

这是您使用状态管理库的地方,例如 redux在那里你有一个全局商店,你可以调度操作。你可以看看这个stackoverflow post

关于javascript - React Native - 不同JS文件之间的setState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825849/

相关文章:

javascript - AngularJS:如何从特定值重复

javascript - react : Update state variables shorthand

javascript - 用户输入 - Javascript 中两个日期的差异

javascript - 不能在交集类型交集的任何成员上调用方法 - Flow|React|Immutable

javascript - React Router 别名命名路由

javascript - React Native Redux Reducer 不工作

javascript - 使用标准验证不同类型的表单输入

javascript - 通过 Axios/Express 返回错误值到 React App

javascript - 将类切换到 .map() 函数中的特定项目

ios - react native - ios - 启用更大的文本表单可访问性搞砸了一切