2017-09-27 49 views
1

任何人都可以解释为什么我会得到类似于'null不是对象(评估this.state.sessionState)',即使我明确声明了构造函数?声明null在使用ES6语法的React native中

export default class App extends React.Component { 
    constructor(props) { 
    super(props); 
    this.state = { sessionState: false }; 
} 
render() { 
    return (
    <ThemeProvider uiTheme={uiTheme}> 
     <View style={mainStyle.head}> 
     {this.state.sessionState?Feed:Welcome} 
     </View> 
    </ThemeProvider> 
); 
} 
} 
+0

您可以用{this.state.sessionState?'Feed'''Welcome'}'替换'{this.state.sessionState?Feed:Welcome}'吗? – cdaiga

+1

您能否提供实际产生错误的代码?我的猜测是你正在评估'this.state'在一个未绑定组件的函数中 - 所以你需要在构造函数中绑定它或使用类属性声明语法 –

+0

@cdaiga我不明白为什么我需要替换这些,Feed和Welcome是返回一些组件的变量。 –

回答

0

你需要的,如果你改变你的sessionState真或假,然后你会得到你的结果重新加载页面..

,如果你提供真实的状态,那么肯定会按照你的陈述打印Feed,因为条件运算符执行第一条语句为真,第二条语句为假,所以如果你提供虚假的状态,然后重新加载你的页面,你会得到'欢迎'

+0

我不确定这是否是最接近问题的答案,我认为是一个相关的东西到世博会框架。但是,当我在应用程序中重新启动包时,一切都按预期工作。 –

+0

它与框架无关,当你使用一个状态时你需要重新加载它,所以当你到那个页面时,构造函数会初始化为状态,并且你会得到正确的结果,不需要重新启动包 –

+0

我明白你意思。这就是React的工作方式,但是我可以看到问题解决了,只需再次安装整个应用程序(我的意思是,Ctrl + C和npm在控制台中编译) –

0

好,this按预期工作

import React, { Component } from 'react'; 
import { Text, View } from 'react-native'; 

export default class App extends Component { 
    constructor(props) { 
    super(props); 
    this.state = { sessionState: true }; 
} 
render() { 
    return (

     <View > 
     <Text> </Text> 
     <Text> the message is </Text> 
     <Text> {this.state.sessionState?'Feed':'Welcome'}</Text> 
     </View> 
); 
} 
} 
+0

当我设置sessionState:true文字仍然打印欢迎,而不是饲料。 –

+0

这是怎么回事?也许有什么不对?只是改变了链接,将'sessionState'修改为'true',这样Feed就可以打印出来了,D: – armnotstrong

相关问题