React js Multiple Select [对象对象],[对象对象]

问题描述

我正在使用Material UI进行多次选择。这是我的代码

  <TextField
        classes={{ root: classes.root }}
        select
        name="states"
        id="states"
        fullWidth
        label="states where you want to work" 
        SelectProps={{
          multiple: true,value: states.states,onChange: handleFieldChange
        }}
      >
        {listStates.map(col => (
              <MenuItem selected classes={{ selected: classes.selected }} key={col} value={col}>
                  <CheckBox checked={states.states.indexOf(col) > -1} />
                  <ListItemText primary={col} />
              </MenuItem>
            ))} 
      </TextField>

这是handleFieldChange函数

  const handleFieldChange = event => {
      event.persist();
      setStates(states => ({
        ...states,[event.target.name]:
          event.target.type === "checkBox"
            ? event.target.checked
            : event.target.value
      }));
    };

这是状态数组:

const listStates = [ "Aguascalientes","Baja California","Baja California Sur","Campeche","CDMX","Coahuila de Zaragoza","Colima","Chiapas","Chihuahua","Durango","Guanajuato","Guerrero","Hidalgo","Jalisco","EDOMEX","Michoacán de Ocampo","Morelos","Nayarit","Nuevo León","Oaxaca","Puebla","QueréTaro","Quintana Roo","San Luis Potosí","Sinaloa","Sonora","Tabasco","Tamaulipas","Tlaxcala","Veracruz de Ignacio de la Llave","Yucatán","Zacatecas"];

一切正常,这些值正确保存在useState中,但是在屏幕上我看不到我选择的值,只看到了[object Object],[object Object]。

你知道为什么会这样吗?

致谢

解决方法

问题似乎是缺少道具renderValue。 value是所选值的列表,但是renderValue函数提供了实际的渲染逻辑。通过这些额外的道具,它应该可以正常工作。

根据official docs
renderValue是function(value: any) => ReactNode,其中value-提供给组件的值。

示例代码:

SelectProps={{
  multiple: true,value: states.states,onChange: handleFieldChange,renderValue: (data) => <div>{data.join(",")}</div>
}}

希望有帮助。还原任何疑问/澄清。