Reactjs 在React Native中从Promise返回JSX
我想在我的react原生应用程序中有条件地呈现组件,我已经尝试过了,但似乎没有任何效果不变冲突:对象作为React子对象无效(找到:对象w 第i个键{u40,{u65,{u55,{u72})。如果要渲染子对象集合,请使用数组。我不明白这里缺少了什么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
<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我已根据您的要求更新了答案。您只需创建一个新组件,然后在返回之外使用承诺:)