将变量放入 render() return - React Native

IT技术 json reactjs react-native jsx
2022-08-04 01:01:14

我是mappingjson 数据并且可以console.log得到我的结果,但我无法在渲染中插入这些值。

这是我的渲染代码:

data_use = responseJson;
     const result_id = data_use.map(function(val) {
      return val.id;
    }).join(',');
    console.log(result_id);
render(){
return(

     <View style = { styles.MainContainer }>
      <View>
       <Card>          
          <View>
          <Text>{result_id}</Text>
         </View>
       </Card>
       </View>
     </View>
   );
  }

我得到的错误是ReferenceError: result_id is not defined. 哪个是奇怪的,因为它是被定义的?

2个回答

如果数据是从服务器加载的,这种方法将很有用。

constructor(props) {
  super(props);
  this.state = {
     data : []
  };

}

componentDidMount() {
   // Your code to fetch data from server

   this.setState({ data: your_array_from_fetch });
}

render(){
   return(
     <View style={ styles.MainContainer }>
        <View>
           <Card>          
              <View>
                {
                   this.state.data.length > 0 ?
                       this.state.data.map((val, index) => {
                           return (
                              <Text key={index}>val.id</Text>
                           );
                       } ).join(',');
                    : null
                 }
              </View>
           </Card>
         </View>
      </View>
  );
}

我从我这边做了一些假设,我相信这就是你想要的!如果有任何问题,请在下面写下。

编辑:

  1. Yoganode 问题可以通过测试数据数组长度是否大于零来解决。这通常发生在 render 没有返回任何内容时。
  2. 我使用componentDidMount而不是componentWillMount因为componentWillMount已弃用。

试试这个条件渲染

{
    this.state.data.length > 0 ?
        this.state.data.map((val, index) => {
           if (some_var == another_var) {
              return (
                 <Text key={index}>val.id</Text>
              );
           }
        }).join(',');
    : null
}

你所做的一切都是正确的,但你是可变的吗declared outside render如何访问它render

render(){
//considering array of objects in "data_use" state
 const result_id = this.state.data_use.map(function(val) {
      return val.id;
    }).join(',');

return(

     <View style = { styles.MainContainer }>
      <View>
       <Card>          
          <View>
          <Text>{result_id}</Text>
         </View>
       </Card>
       </View>
     </View>
   );
  }