React native 使用mobX的react应用程序中的状态更改

React native 使用mobX的react应用程序中的状态更改,react-native,mobx,mobx-react,React Native,Mobx,Mobx React,我的任务是在服务器数据尚未到达时显示下载组件 export const LoaderComponent = () => ( <View style={styles.center}> <ActivityIndicator size="large" /> </View> ); const styles = StyleSheet.create({ center: { ..... }, });

我的任务是在服务器数据尚未到达时显示下载组件

export const LoaderComponent = () => (
    <View style={styles.center}>
        <ActivityIndicator size="large" />
    </View>
);

const styles = StyleSheet.create({
    center: {
        .....
    },
});

授权用户时,我显示下载组件,从服务器接收数据后,我隐藏下载组件。我人为地延迟了两秒钟

class AuthState {
    @observable email: string = '';
    @observable password: string = '';

    @action authentication(data: IAuth) {
        console.log('Action authentication');

        LoaderState.showLoader();

        ....

        setTimeout(() => {
            LoaderState.hideLoader();
            console.log('Change state loader', LoaderState.loading);
        }, 2000);
    }
}

export default new AuthState();
在下一个屏幕上,我检查是否设置了下载标志,我显示下载组件,如果没有,我隐藏它

export const ProvidersScreen = () => {
    console.log(LoaderState.loading);

    if (LoaderState.loading) {
        return <LoaderComponent />;
    }

    return (
        <View>
            ....
        </View>
    );
};
导出常量提供程序屏幕=()=>{ 控制台日志(LoaderState.loading); if(装载机状态装载){ 返回; } 返回( .... ); };
问题是下载组件总是显示出来,当状态改变时,它不会隐藏。为什么下载组件没有隐藏?

我认为原因是您的
ProvidersScreen
不是
观测者
组件,请尝试:

export const ProvidersScreen=观察者(()=>{
控制台日志(LoaderState.loading);
if(装载机状态装载){
返回;
}
返回(
....
);
});

我认为原因是您的
提供者屏幕
不是一个
观察者
组件,请尝试一下:

export const ProvidersScreen=观察者(()=>{
控制台日志(LoaderState.loading);
if(装载机状态装载){
返回;
}
返回(
....
);
});

您忘了添加观察员

添加以下代码:

import { observer } from "mobx-react";

export const ProvidersScreen = observer(() => {
    console.log(LoaderState.loading);

    if (LoaderState.loading) {
        return <LoaderComponent />;
    }

    return (
      <View>
         ....
      </View>
    );
});
从“mobx react”导入{observer};
导出常量ProvidersScreen=观察者(()=>{
控制台日志(LoaderState.loading);
if(装载机状态装载){
返回;
}
返回(
....
);
});

您忘了添加观察员

添加以下代码:

import { observer } from "mobx-react";

export const ProvidersScreen = observer(() => {
    console.log(LoaderState.loading);

    if (LoaderState.loading) {
        return <LoaderComponent />;
    }

    return (
      <View>
         ....
      </View>
    );
});
从“mobx react”导入{observer};
导出常量ProvidersScreen=观察者(()=>{
控制台日志(LoaderState.loading);
if(装载机状态装载){
返回;
}
返回(
....
);
});

我的仿真器出现错误
类型错误:组件不是函数。(在“Component(props,refOrContext)”中,“Component”是对象的实例)
@MegaRoks您能详细解释一下情况吗?这看起来是另一个问题。我重建了这个项目,它成功了,它解决了我的问题。Thanks我在emulator
typeError中遇到错误:组件不是函数。(在“Component(props,refOrContext)”中,“Component”是对象的实例)
@MegaRoks您能详细解释一下情况吗?这看起来是另一个问题。我重建了这个项目,它成功了,它解决了我的问题。谢谢