Reactjs 在React Native中从Promise返回JSX

Reactjs 在React Native中从Promise返回JSX,reactjs,react-native,promise,jsx,react-context,Reactjs,React Native,Promise,Jsx,React Context,我想在我的react原生应用程序中有条件地呈现组件,我已经尝试过了,但似乎没有任何效果不变冲突:对象作为React子对象无效(找到:对象w 第i个键{u40,{u65,{u55,{u72})。如果要渲染子对象集合,请使用数组。我不明白这里缺少了什么 <RootContext.Consumer> {({handleChange, data}) => { let {property, currentFloor} = data

我想在我的react原生应用程序中有条件地呈现组件,我已经尝试过了,但似乎没有任何效果不变冲突:对象作为React子对象无效(找到:对象w 第i个键{u40,{u65,{u55,{u72})。如果要渲染子对象集合,请使用数组。我不明白这里缺少了什么

<RootContext.Consumer>
            {({handleChange, data}) => {
                let {property, currentFloor} = data
                let flag = false
                return this._getConfigDataFromFile(property, currentFloor)
                    .then(data => {
                        data.forEach(c => {
                            if (c.zone === this.props.title) {
                                flag = true
                            }
                        })

                        return (
                            <TouchableOpacity onPress={this._onPress}>
                                <View>
                                    {flag ? <SomeComponent /> : <SomeOtherComponent />}
                                </View>
                            </TouchableOpacity>
                        )
                    })
            }}
</RootContext.Consumer>

{({handleChange,data})=>{
设{property,currentFloor}=data
设flag=false
返回此。\u getConfigDataFromFile(属性,currentFloor)
。然后(数据=>{
data.forEach(c=>{
if(c.zone==this.props.title){
flag=true
}
})
返回(
{flag?:}
)
})
}}

原因是您需要返回React组件,而您正在返回承诺。 做点像

const App = (
     <ReactConsumer>
        <Component1 />  
     </ReactConsumder>
);

const Component1 = () => {
   React.useEffect(() => {
     const pr = await somePromise();
   }, []};

   return (
    { pr ? 
        <AnotherComponent>pr something</AnotherComponent> 
        : null or something else 
    });

const应用=(
);
常量组件1=()=>{
React.useffect(()=>{
const pr=等待某个承诺();
}, []};
返回(
{pr?
公关
:null或其他内容
});

您可以使用useEffect或类似componentDidMount的东西。

您正在返回一个promise obj(
返回这个。\u getConfigDataFromFile
),它应该是React子级。取出函数并将其放入componentDidMount或类似的东西中,或者使用Wait代替then(不推荐)为什么你说不推荐使用
wait
?另外,我无法访问
componentdidmount
中的
数据
对象,因此我认为我不能将
\u getConfigDataFromFile
函数移动到任何其他地方,因为加载时你有责任在屏幕上显示某个内容。问题是我无法访问
数据
>对象在
之外。因此,我必须在渲染函数内部使用
\u getConfigDataFromFile
。@PranjalGore我已根据您的要求更新了答案。您只需创建一个新组件,然后在返回之外使用承诺:)