TypeError:(node.text || [])。map不是函数

时间:2019-04-16 09:14:39

标签: reactjs

这是我在映射状态下获得的最终结果,我想在节点状态内映射文本数组,请忽略节点const,这是我在console.log(this.state.nodes)中得到的输出; < / p>

     `const nodes = [{
             id: 1,
             style: 'dummy data',
             className: 'dummy data',
             text: [
              { id: 1, text: 'text 1'},
              { id: 2, text: 'text 2'}
             ]
           }]`

在这里我映射节点状态,在节点状态中有文本数组,我想访问文本中的文本1,如何通过映射来实现这一点

   `{this.state.nodes.map((node, index) => {
            const showbutton = node.className === 'square';
            const decisionbutton = node.className === 'diamond';

     return(
      <div
             key={index}
             className={'node ' + node.className}
             id={node.id}
             ref={nodes => this.refs.nodes[index] = nodes}
             style={node.style}
             onClick={this.activeElem}

         >
           {(node.text|| []).map((child,key)=>{
             return (
                <div key={key}>
                {child.text}
                </div>
             );
           })}`

3 个答案:

答案 0 :(得分:0)

rxjs html中的map也有同样的问题 这是我的工作...

 return(
      <div
             key={index}
             className={'node ' + node.className}
             id={node.id}
             ref={nodes => this.refs.nodes[index] = nodes}
             style={node.style}
             onClick={this.activeElem}

         >
           {Array.from(Array(node.text.length), (e, i) => {
                return (
                        <div key={key}>
                         {node.text[i].text}
                        </div>
                       )
           }
      </div>
)

查看是否有帮助。 我只是在创建一个临时空数组,并使用它的索引遍历node.text数组

答案 1 :(得分:0)

问题在于条件(node.text || [])中的第一个变量实际上不是Array

当您尝试进行管理时,它显示了[object][object]。 这是JS Object数据类型-map()Array.prototype中存在的函数。

当您完成console.log(JSON.stringify(node.text))时,确实向您显示了文本。

.map()也将不适用于undefined

这就是失败的原因。 node.text不是数组。

如果您返回一个对象,请考虑使用Object.keysinfo)循环访问该对象,或者使用for...of循环, 或者只是将node.text重新格式化为数组类型。

答案 2 :(得分:0)

const nodes = [{
             id: 1,
             style: 'dummy data',
             className: 'dummy data',
             text: [
              { id: 1, text: 'text 1'},
              { id: 2, text: 'text 2'}
             ]
           }]

node.map((node) => { return node.text.map((value) => (value.id)); }) 

运行此命令,它将返回有效值...只需确保node.text将对象作为值而不是screenshot

中所示的字符串