反应原生使用let或var里面的渲染方法

时间:2018-04-13 17:06:48

标签: javascript reactjs react-native

为什么我不能在jsx中使用javascript?我只能使用像array.map或filter这样的东西。但是如果想要使用多个语句则不起作用。

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

export default class HelloWorldApp extends Component {
  render() {
    return (
      {
         let a = 5
         if(a==5){return <Text>hello</Text>}
      }
    );
  }
}

2 个答案:

答案 0 :(得分:2)

尝试将您的逻辑放在return语句之外。我使用这种格式,我认为这是可以接受的。

export default class HelloWorldApp extends Component {
  render() {
    let a = 5;
    
    return (
      {(a === 5) &&
        <Text>hello</Text>
      }
    );
  }
}

还要注意三重相等,以避免类型凝聚。这可能不是您的目的所必需,但最佳做法!

答案 1 :(得分:0)

您可以如下使用此setTimeOut()函数:

setTimeout(() => {
  if (pushToken!=null && deviceId!=null) {
    console.log("pushToken & OS ");
    this.setState({ pushToken: pushToken});
    this.setState({ deviceId: deviceId });
    console.log("pushToken & OS "+pushToken+"\n"+deviceId);
  }
}, 1000);