Javascript 无法读取属性';地图';当我已经声明了属性时的未定义的reactjs

Javascript 无法读取属性';地图';当我已经声明了属性时的未定义的reactjs,javascript,reactjs,dictionary,Javascript,Reactjs,Dictionary,您好,我正在运行以下程序,我已将textfield属性设置为字符串,据我所知,这是一个数组,映射函数应该在数组上工作,但它仍然表示无法读取未定义的属性“map”,那么它在状态中是否未定义?谢谢 class App extends Component { state={ textfield:"first value", } makeUnique =(textfield)=>{ return String.prototype.concat(...new Set(tex

您好,我正在运行以下程序,我已将textfield属性设置为字符串,据我所知,这是一个数组,映射函数应该在数组上工作,但它仍然表示无法读取未定义的属性“map”,那么它在状态中是否未定义?谢谢

class App extends Component {

  state={
    textfield:"first value", 
  }

makeUnique =(textfield)=>{
  return String.prototype.concat(...new Set(textfield) );
}

  textchanged = (event)=>{
    this.setState({
      textfield:event.target.value,
      caltexlength:event.target.value.length,    
    })    
  }


  render() {
    let uniquechars=null;

    uniquechars=(<div>
      {
        this.textfield.map((char,index)=>{
          return <charComponent
          char ={this.makeUnique(this.state.textfield)}/>
        })
      }
    </div>)## Heading ##
类应用程序扩展组件{
陈述={
textfield:“第一个值”,
}
makeUnique=(文本字段)=>{
返回String.prototype.concat(…新集合(textfield));
}
textchanged=(事件)=>{
这是我的国家({
textfield:event.target.value,
caltexlength:event.target.value.length,
})    
}
render(){
让uniquechars=null;
独一无二的=(
{
this.textfield.map((字符,索引)=>{
返回
})
}
)##标题##

TextField是一个字符串,为什么要对它进行映射。映射只在数组上工作。要访问state TextField,它应该是this.state.TextField,而不是this.TextField

所以改变

uniquechars=(<div>
  {
    this.textfield.map((char,index)=>{
      return <charComponent
      char ={this.makeUnique(this.state.textfield)}/>
    })
  }
</div>)
uniquechars=(
{
this.textfield.map((字符,索引)=>{
返回
})
}
)

uniquechars=(
)

TextField是一个字符串,为什么要对它进行映射。映射只在数组上工作。要访问state TextField,它应该是this.state.TextField,而不是this.TextField

所以改变

uniquechars=(<div>
  {
    this.textfield.map((char,index)=>{
      return <charComponent
      char ={this.makeUnique(this.state.textfield)}/>
    })
  }
</div>)
uniquechars=(
{
this.textfield.map((字符,索引)=>{
返回
})
}
)

uniquechars=(
)
您必须更换

this.textfield.map

你必须更换

this.textfield.map


按如下所示编写行
this.textfield.map((char,index)

[...this.state.textfield].map((char,index)

使用spread运算符,您将从字符串中创建一个数组,并可以在其上调用map。

将行
写入this.textfield.map((char,index)
,如下所示

[...this.state.textfield].map((char,index)

使用spread运算符,您将从字符串创建一个数组,您可以对其调用map。

TextField是一个字符串,那么您为什么要对其进行map操作。map仅在数组上工作。要访问state TextField,它应该是this.state.TextField,而不是this.TextField。TextField谢谢@HemadriDasari我试过它说这个。state.TextField.map不好玩Action,?Thanksy你不应该在上面做map,因为我告诉过你map只能在数组上工作,不能在字符串上工作。TextField是字符串,为什么你要在上面做map。map只能在数组上工作。要访问state TextField,应该是this.state.TextField,而不是this.textFieldthanks@HemadriDasari,我试过它说this.state.TextField.map不是函数tion,?谢谢你不应该在上面做map,因为我告诉过你map只能在数组上工作,而不能在字符串上工作。到目前为止,我一直认为textfield基本上是一个数组,但如果我们放textfield.split(“”),它就不是数组textfield是一个字符串,在这里我们使用spread运算符来扩展字符串并创建一个字符数组。这是redux Reducer中的一种常见做法,用于状态不变性,使用prev state和新数据创建一个新数组。因此,您不需要使用textfield.split(“”)。有意义-有些对字符串有效,有些对字符串无效,而spread运算符对字符串和数组的作用是相同的。是的。当您想要创建一个不可变数组时,spread运算符是一种方法。特别是当您的状态是数组时,您必须使用此方法将新创建的数组传递给setState。您解决了问题吗?Grea如果这有帮助的话,请确保这个答案是正确的。到目前为止,我一直认为textfield基本上是一个数组,但如果我们把textfield.split(“”)放进去,它就不是数组了textfield是一个字符串,在这里我们使用spread运算符来扩展字符串并创建一个字符数组。这是redux Reducer中的一种常见做法,用于状态不变性,使用prev state和新数据创建一个新数组。因此,您不需要使用textfield.split(“”)。有意义-有些对字符串有效,有些对字符串无效,而spread运算符对字符串和数组的作用是相同的。是的。当您想要创建一个不可变数组时,spread运算符是一种方法。特别是当您的状态是数组时,您必须使用此方法将新创建的数组传递给setState。您解决了问题吗?Grea如果这有帮助,请确保把这个答案标记为正确。