javascript - 从回调函数返回不设置文本

标签 javascript react-native callback

我想知道用户是在线还是离线。因此,我从我的类中导出了一个名为 isOnline 的函数。

以下是我定义 isOnline 函数的方式:

export const isOnline = (callback) => {
    NetInfo.isConnected.fetch()
           .then(result => {
                callback(null, result);
           }).catch(err => {
                callback(err);
           });
};

isOnline 函数返回一个 bool 值

现在,我想在组件中使用它。因此,我尝试按如下方式使用它:

render() {
    return (
        <Text>{
            isOnline((err, result) => {
                console.log(err);
                console.log(result);
                return result ? 'Online' : 'Offline';
            })
        }</Text>
    );
}

我还记录了错误和结果对象。它们的值是:

err: null
result: false

我希望在屏幕上看到“在线”或“离线”。但我没有看到任何文字。我知道我的返回声明中有问题。但我不知道是什么。有人可以帮助我吗?

最佳答案

您最好将 Online/Offline 字符串放入状态中,然后使用 componentDidMount 更新它

例如:

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

    componentDidMount() {
        isOnline((err, result) => {
            this.setState({
                text: result ? 'Online' : 'Offline'      
            });
        })
    }

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

}

关于javascript - 从回调函数返回不设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47567817/

相关文章:

javascript - 密码的正则表达式必须包含至少八个字符、至少一个数字以及大小写字母和特殊字符

android - react native 键盘将 Bottom Sheet 推出屏幕/顶部

javascript - 获取数组的总和并在另一个函数中回调一个函数

javascript - Node.JS 函数返回 http 响应值

javascript - 用 systemjs 替换 requirejs——变量在本地范围内不可见

Javascript 复制日期 + 一年

javascript - 使用javascript按日期加载css

android - 如何将 versionCode 转化为 native 代码 (android)

javascript - jquery href 和 onclick 分离

javascript - 将函数添加到队列中以便稍后执行。终极版