React Material UI выберите ссылку на захват для события - PullRequest
1 голос
/ 08 ноября 2019

У меня проблема с использованием выбора материала. Я хочу захватить весь объект в функции onChange (). Текущее событие захватывает только выбранное значение. Например: если я выбрал Status 'IN PROGRESS', я хочу захватить STATUS_CODE этого объекта.

class ExmComp extends Component {
  constructor(props) {
      super(props);
      this.state = {
          status:'Open' ,
      };
    const statusList = [
{
  "STATUS_ID": 10,
  "STATUS": "Open",
  "STATUS_CODE": "OSNO",
  "LINK": "open",
  "ICON": "done_outline"

},
{
  "STATUS_ID": 20,
  "STATUS": "In Progress",
  "STATUS_CODE": "NOPR",
  "LINK": "inProgress",
  "ICON": "play_arrow"
},
{
  "STATUS_ID": 40,
  "STATUS": "Cancelled",
  "STATUS_CODE": null,
  "LINK": "cancelled",
  "ICON": "cancel_presentation"
},
{
  "STATUS_ID": 30,
  "STATUS": "Closed",
  "STATUS_CODE": "NOCO",
  "LINK": "closed",
  "ICON": "close"
}
];

event.target.value возвращает только значение. Здесь я хочу захватить весь пример объекта. Если выбрано закрытое, я хочу захватить весь закрытый объект

  /* {
          "STATUS_ID": 30,
          "STATUS": "Closed",
          "STATUS_CODE": "NOCO",
          "LINK": "closed",
          "ICON": "close"
      }*/
    handleChange = event => {
          this.setState({status: event.target.value});

      };

      render(){
          return(
          <Select
              select
              label="Status"
              value={status}
              onChange={this.handleChange}
          >
              {statusList.map(option => (
                  <MenuItem key={option.STATUS_ID} value={option.STATUS}>
                      {option.STATUS}
                  </MenuItem>
              ))}
          </Select>
          )
      }
    }

1 Ответ

0 голосов
/ 08 ноября 2019

Не можете ли вы отфильтровать полный объект из массива statusList в функции handleChange? Примерно так:

  handleChange = event => {
    const fullObject = statusList.filter(val => event.target.value === val.STATUS)[0];
    console.log(fullObject);
    this.setState({ [event.target.name]: event.target.value });
  };

Код - https://codesandbox.io/s/2zy7m2701r

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...