Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用键唯一标识每个元素,并在ReactJS中更改该元素的道具_Javascript_Reactjs - Fatal编程技术网

Javascript 使用键唯一标识每个元素,并在ReactJS中更改该元素的道具

Javascript 使用键唯一标识每个元素,并在ReactJS中更改该元素的道具,javascript,reactjs,Javascript,Reactjs,我有JSON数组中的JSON对象列表。其中每个元素都用键唯一标识 JSON对象包含: 事件名称 日期和时间 我只想为特定于事件的显示麦克风的开关。 目前正在发生的是,我在JSON对象的每个事件上显示mic on和mic off,而不是单击的对象。而仅限于唯一键 我知道一个问题,即mic状态是全局声明的,并且是所有人的状态。但是,我是否可以将事件名称附加到麦克风状态以使其唯一。您可以使用状态属性来保持每个单独的事件的开/关位置,而不是保持一个通用位置 类应用程序扩展了React.Componen

我有JSON数组中的JSON对象列表。其中每个元素都用键唯一标识

JSON对象包含:

事件名称

日期和时间

我只想为特定于事件的显示麦克风的开关。 目前正在发生的是,我在JSON对象的每个事件上显示mic on和mic off,而不是单击的对象。而仅限于唯一键


我知道一个问题,即mic状态是全局声明的,并且是所有人的状态。但是,我是否可以将事件名称附加到麦克风状态以使其唯一。

您可以使用状态属性来保持每个单独的
事件的开/关位置,而不是保持一个通用位置

类应用程序扩展了React.Component{
状态={
密歇根州:{}
};
handleMicState=id=>
this.setState(当前=>({
micStates:{…current.micStates[id]:!current.micStates[id]}
}));
render(){
返回(
{this.props.events.map(event=>(
    {event.event_name} {this.state.micStates[event.id]( this.handleMicState(event.id)}> 在

    {“} ) : ( this.handleMicState(event.id)}> 关闭

    {”“} )}
  • {event.date\u time}
))} ); } } 常量事件=[ {id:1,事件名称:“foo”,日期时间:12345}, {id:2,事件名称:“bar”,日期时间:67890}, {id:3,事件名称:“baz”,日期时间:12345} ]; render(,document.getElementById(“根”))
您可以使用状态属性来保持每个单独的
事件的开/关位置,而不是保持一个通用位置

类应用程序扩展了React.Component{
状态={
密歇根州:{}
};
handleMicState=id=>
this.setState(当前=>({
micStates:{…current.micStates[id]:!current.micStates[id]}
}));
render(){
返回(
{this.props.events.map(event=>(
    {event.event_name} {this.state.micStates[event.id]( this.handleMicState(event.id)}> 在

    {“} ) : ( this.handleMicState(event.id)}> 关闭

    {”“} )}
  • {event.date\u time}
))} ); } } 常量事件=[ {id:1,事件名称:“foo”,日期时间:12345}, {id:2,事件名称:“bar”,日期时间:67890}, {id:3,事件名称:“baz”,日期时间:12345} ]; render(,document.getElementById(“根”))
您也可以使用此解决方案,希望这对您有所帮助

    constructor(props) {
        super(props);
        this.state = {
          mics :{},
        }
     }

     handleMics = name =>{
        let {mics}=this.state;
        mics[name]=mics[name]? false : true;
        this.setState({ mics });
     }

     {this.props.events.map((event) =>
       (
        <div key={event.event_name}>
            <ul>
              <div><h4>{event.event_name}</h4>
                <div>            //ternary operation next line
                {this.state.mics[event.event_name]?
                     <span onClick={()=>this.handleMics(event.event_name)}>
                         <MicOn /> 
                    </span> :
                    <span onClick={()=>this.handleMics(event.event_name)}> 
                       <MicOff />
                    </span>}              
                   </div>
                  </div>
               <li>{event.date_time}</li></ul>
           </div>
         ))
      }
构造函数(道具){
超级(道具);
此.state={
中等收入国家:{},
}
}
handleMics=name=>{
设{mics}=this.state;
mics[name]=mics[name]?false:true;
这个.setState({mics});
}
{this.props.events.map((event)=>
(
    {event.event_name} //下一行三值运算 {this.state.mics[event.event_name]? this.handleMics(event.event_name)}> : this.handleMics(event.event_name)}> }
  • {event.date\u time}
)) }
您也可以使用此解决方案,希望这对您有所帮助

    constructor(props) {
        super(props);
        this.state = {
          mics :{},
        }
     }

     handleMics = name =>{
        let {mics}=this.state;
        mics[name]=mics[name]? false : true;
        this.setState({ mics });
     }

     {this.props.events.map((event) =>
       (
        <div key={event.event_name}>
            <ul>
              <div><h4>{event.event_name}</h4>
                <div>            //ternary operation next line
                {this.state.mics[event.event_name]?
                     <span onClick={()=>this.handleMics(event.event_name)}>
                         <MicOn /> 
                    </span> :
                    <span onClick={()=>this.handleMics(event.event_name)}> 
                       <MicOff />
                    </span>}              
                   </div>
                  </div>
               <li>{event.date_time}</li></ul>
           </div>
         ))
      }
构造函数(道具){
超级(道具);
此.state={
中等收入国家:{},
}
}
handleMics=name=>{
设{mics}=this.state;
mics[name]=mics[name]?false:true;
这个.setState({mics});
}
{this.props.events.map((event)=>
(
    {event.event_name} //下一行三值运算 {this.state.mics[event.event_name]? this.handleMics(event.event_name)}> : this.handleMics(event.event_name)}> }
  • {event.date\u time}
)) }
如果在全局状态对象的“mic”属性旁边添加一个以上的属性,是否有用。state={mic:false,事件:“”然后,您可以使用传递给click handlers的名称设置this.state.event,并在html端检查this.state.mic&&this.state.event==event.name?如果您在全局状态对象的“mic”属性旁边添加一个属性,例如这样的属性,是否有用。state={mic false,event:'}然后,您可以使用传递给click handlers的名称设置this.state.event,并在html端检查this.state.mic&&this.state.event==event.name?此行的作用是什么
this.setState(current=>({micStates:{…current.micStates,[id]:!current.micStates[id]}))
?@Plootus,我添加了一些解释。你能告诉我什么是当前的吗?还有当前
…当前之前的三个点。micStates
当前
只是当前状态的一个名称。你可以用任何名字。点点滴滴散开
    constructor(props) {
        super(props);
        this.state = {
          mics :{},
        }
     }

     handleMics = name =>{
        let {mics}=this.state;
        mics[name]=mics[name]? false : true;
        this.setState({ mics });
     }

     {this.props.events.map((event) =>
       (
        <div key={event.event_name}>
            <ul>
              <div><h4>{event.event_name}</h4>
                <div>            //ternary operation next line
                {this.state.mics[event.event_name]?
                     <span onClick={()=>this.handleMics(event.event_name)}>
                         <MicOn /> 
                    </span> :
                    <span onClick={()=>this.handleMics(event.event_name)}> 
                       <MicOff />
                    </span>}              
                   </div>
                  </div>
               <li>{event.date_time}</li></ul>
           </div>
         ))
      }