Как использовать значение this.state.rent вместо значения this.props.house.rent в cache.readQuery или cache.writeQuery - PullRequest
0 голосов
/ 25 июня 2019

Старое значение возвращается в поле ввода.

Я инициализировал this.props.house.rent (который возвращает старое значение) значением поля ввода this.state.rent (введенное пользователем значение), но я не могу этого сделать, так как он становится синтаксисом антипаттерна,Вы можете увидеть это в комментариях кода ниже.

cacheUpdate = (cache, { data: { updateHouse } }) => {
    const data = cache.readQuery({
      query: QUERY_CONFIRM_QUERY,
      variables: { id: this.props.confirmId },
    });
    const houses = data.queryConfirm.houses;
    const prevHouse = this.props.house;
    //prevHouse.rent = this.state.rent; // this.state.rent is user entered input value
    const updatedHouses = houses.map(house => {
      if (house.id === prevHouse.id) {
        const updatedHouseItem = _.pickBy(updateHouse, _.identity);
        return { ...prevHouse, ...updatedHouseItem };
      }
      return house;
    });
    data.queryConfirm.houses = updatedHouses;

    cache.writeQuery({
      query: QUERY_CONFIRM_QUERY,
      variables: {
        id: this.props.confirmId,
      },
      data,
    });
  };

Я хочу удалить старое значение из readQuery или writeQuery кеша.

1 Ответ

0 голосов
/ 25 июня 2019

Надеюсь, это кому-нибудь поможет. Ууууу .. Я думаю, это было просто на самом деле. Я думал сделать обратный вызов, но это невозможно, так как значения поступают из базы данных. В любом случае, в заключение просто взгляните на значение data.queryConfirm.houses в консоли и назначьте требуемый массив, например, скажем, что мне нужно было data.queryContact.houses [0] .rent, и инициализируйте его в this.state.rent. Вот и все.

...