Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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 react select onChange事件不使用道具渲染_Javascript_Reactjs_React Select - Fatal编程技术网

Javascript react select onChange事件不使用道具渲染

Javascript react select onChange事件不使用道具渲染,javascript,reactjs,react-select,Javascript,Reactjs,React Select,我正在使用select react库-> 我已设法将选项映射到itemList中需要的各个项目。下拉列表确实注册了所选选项,但是我的最终目标是让条形图呈现所选选项的正确数据 /** * Produces a filter list for item sales cards * @param {*} props * @returns the filter list of item names along with their ids */ export const ItemSelecti

我正在使用select react库->

我已设法将选项映射到itemList中需要的各个项目。下拉列表确实注册了所选选项,但是我的最终目标是让条形图呈现所选选项的正确数据

/**
 * Produces a filter list for item sales cards
 * @param {*} props
 * @returns the filter list of item names along with their ids
 */

export const ItemSelection = (props) => {
  const { onChangeValue, itemList } = props;

  if (itemList.length === 0) return <></>;

  return (
    <UncontrolledDropdown>
     <Select
        options={itemList.map((item) => {
          return {
            label: item.name,
            value: item,
            key: item.itemID,
          };
        })}
        onChange={(item)=>onChangeValue(item)}
        placeholder="ITEM"
      />
    </UncontrolledDropdown>
  );
};
此处正在使用itemSelection:

  const [itemID = '1', setItemID] = useState('1');
  const [itemName = '', setItemName] = useState('');
  const [itemListID = [], setItemListID] = useState([]);

  <ItemSelection
      onChangeValue={(item) => {
         setItemID(item.itemID);
         setItemName(item.name);
       }}
        itemList={itemListID}
    />

onChangeValue是将所选选项注册到条形图的值。是否仍要映射onChangeValue?

这取决于您实际期望从使用ItemSelection的父元素得到的参数。这就是说,Select似乎还采用了一个函数,该函数采用字符串类型的操作,并将选项值作为第二个参数。选定的值将出现在第二个参数中

如果您所关心的只是价值,那么下面代码的内容就是您所需要的。注意,您将获得传递给onChangeValue的所选字符串值,我认为这是您想要的,而无需查看来自祖先组件的函数定义

更新:

选择代码可以将整个选项对象作为第二个参数

导出常量ItemSelection=props=>{ const{onChangeValue,itemList}=props; 如果itemList.length==0,则返回null; 回来 { 标签:item.name, value:item.name,//注意此处代码的更改;否则它将是一个对象 关键字:item.itemID, }} onChange={item=>onChangeValueitem} 占位符=项目 /> ; }; 在父组件中

//请注意此处的更改,我在此处删除了作业 const[itemID,setItemID]=useState'1'; const[itemName,setItemName]=useState; const[itemListID,setItemListID]=useState[]; { setItemIDoption.key; setItemNameoption.value; }} itemList={itemListID} />
ItemSelection实际上是在另一个组件中获取其状态集。我已经用相关代码修改了我的问题!所以我上面提到的仍然是相关的,但是您的父级期望某种item类型,但是您在子组件的onChange中得到了一个选项类型。也就是说,代码可以通过几种方式修复,我将尝试解决这些问题。另外,您在父级尝试如何处理itemListID?此外,条形图需要哪些值,itemListID?错误在于您在此处的定义const[itemListID=[],setItemListID]=useState[];。您尝试访问.map代码中的数组数组。这个问题开始较少涉及状态,更多涉及整体代码。非常感谢!!!我将value:item更改为value:item.name及其最终传递的项。