0

我有一个数据对象变量,它通过我的 VS Code 控制台使用以下代码行按预期输出名称数组:

data.Subjects.map((x) => x.Name)

我正在尝试使用这样的 Name 值呈现 Text 组件:

data.Subjects.map((x) => {
    <Text>{x.Name}</Text>
});

但是,上面的代码在我的 Android 模拟器中返回以下错误:

“不变违规:文本字符串必须在文本组件中呈现。”

知道这里可能存在什么问题或者我应该如何更新我的代码?

- 更新 -

好的,这是 render() 方法的精简版本,仍然会出现相同的错误:

  render(){
    let data = ['test1','test2'];
    return (
      <>
        <View>
          data.map((x) => {
            <Text>x</Text>
          });
        </View>
      </>
    );
  }
4

2 回答 2

1

尝试这个

render(){
  let data = ['test1','test2'];
  return (
    <View>
      {data.map((x) => (
        <Text>{x}</Text>
      ))}
    </View>
  );
}

基本上data.map,如果您不使用括号括起来,则您将被解释为文本。

@ktad 也是对的,您需要像这样更改地图:

data.map((x) => (
  <Text>{x}</Text>
))

或这个:

data.map((x) => <Text>{x}</Text>)

或这个:

data.map((x) => {
  return <Text>{x}</Text>
})

否则不返回任何内容

于 2019-10-18T21:59:30.370 回答
-1

尝试使用括号而不是花括号

data.Subjects.map((x) => (
  <Text>{x.Name}</Text>
));
于 2019-10-18T21:21:25.733 回答