Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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
Reactjs 如何在react中只给map的第一个结果提供道具?_Reactjs_Dictionary - Fatal编程技术网

Reactjs 如何在react中只给map的第一个结果提供道具?

Reactjs 如何在react中只给map的第一个结果提供道具?,reactjs,dictionary,Reactjs,Dictionary,我使用map从数组中列出组件。 我只需要给地图的第一个结果加上道具。 我怎么能做到?(仅为元素数组[0]提供一个属性) if(dropdownpoptions&&Array.isArray(dropdownpoptions)){ 返回( {dropdownpoptions.map((选项)=>( this.optionSelected()} > {option.props.children} ))} ); } };您可以试试 if (dropDownOptions && A

我使用map从数组中列出组件。 我只需要给地图的第一个结果加上道具。 我怎么能做到?(仅为元素数组[0]提供一个属性)

if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
    {dropdownpoptions.map((选项)=>( this.optionSelected()} > {option.props.children} ))}
); } };您可以试试

if (dropDownOptions && Array.isArray(dropDownOptions)) {
      return (
        <ul className={styles.ul}>
          {dropDownOptions.map((option, i)=> (
          (i == 1) ? (
            <DropDownItem
              iconName={option.iconName}
              value={option.value}
              displayValue={option.displayValue ? true : false}
              key={option.name}
              onClick={e => this.optionSelected()}
             /> )
              :
           (your-child-here)
          ))}
        </ul>
      );
    }
  };
if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
    {dropdownpoptions.map((选项,i)=>( (i==1)( this.optionSelected()} /> ) : (你的孩子在这里) ))}
); } };
if(dropdownpoptions&Array.isArray(dropdownpoptions)){
返回(
    {dropdownpoptions.map((选项,索引)=>( this.optionSelected()} > {option.props.children} ))}
); }

})

您可以使用
filter
过滤第一个元素和所有其他元素,然后映射到它们上面

if (dropDownOptions && Array.isArray(dropDownOptions)) {
  return (
    <ul className={styles.ul}>
      {/* first element */}
      {dropDownOptions.filter((e, i) => i === 0).map((option, i) => (
        <DropDownItem
          iconName={option.iconName}
          value={option.value}
          displayValue={option.displayValue ? true : false}
          key={option.name}
          onClick={(e) => this.optionSelected()}
        >
          {option.props.children}
        </DropDownItem>
      ))}
      {/* all other elements */}
      {dropDownOptions.filter((e, i) => i !== 0).map((option, i) => (
        <DropDownItem>
          {option.props.children}
        </DropDownItem>
      ))}
    </ul>
  );
}
if(dropdownpoptions&&Array.isArray(dropdownpoptions)){
返回(
    {/*第一个元素*/} {dropdownpoptions.filter((e,i)=>i==0).map((option,i)=>( this.optionSelected()} > {option.props.children} ))} {/*所有其他元素*/} {dropdownpoptions.filter((e,i)=>i!==0).map((option,i)=>( {option.props.children} ))}
); }
为什么要这样做?dropdownoptions中有什么?因为只有第一个子元素会对父组件的更改状态做出反应。传递给map函数的回调函数有第二个参数,即数组的当前索引。您必须确保索引为0,然后传递道具。
if (dropDownOptions && Array.isArray(dropDownOptions)) {
  return (
    <ul className={styles.ul}>
      {/* first element */}
      {dropDownOptions.filter((e, i) => i === 0).map((option, i) => (
        <DropDownItem
          iconName={option.iconName}
          value={option.value}
          displayValue={option.displayValue ? true : false}
          key={option.name}
          onClick={(e) => this.optionSelected()}
        >
          {option.props.children}
        </DropDownItem>
      ))}
      {/* all other elements */}
      {dropDownOptions.filter((e, i) => i !== 0).map((option, i) => (
        <DropDownItem>
          {option.props.children}
        </DropDownItem>
      ))}
    </ul>
  );
}