Как использовать Optimistic UI, когда я получаю данные через навигационные реквизиты? - PullRequest
0 голосов
/ 01 февраля 2019

Итак, у меня есть следующий список вакансий, в котором я выполняю каждую работу.

return getJobs.map(job => (
   <Listings
        key={job._id}
        _id={job._id}
        name={job.name}
        description={job.description}
        city={job.city}
        createdAt={job.createdAt}
        background={job.background}
        available={job.available}
        logo={job.business.logo}
        isFavorited={job.isFavorited}
        favoriteCount={job.favoriteCount}
        onPress={() => this.onJobDetails(job)}
   />
));

Теперь я хочу открыть сведения о работе на другом экране, чтобы получить данные типа this.props.navigation.state.params.job

Теперь интересно то, что я хочу добавить свою работу в избранное.

const FAVORITE_JOB = gql`
  mutation favoriteJob($_id: ID!) {
    favoriteJob(_id: $_id) {
      isFavorited
      favoriteCount
      _id
    }
  }
`;

const mutationConfigFav = {
  props: ({ ownProps, mutate }) => ({
    favorite: () =>
      mutate({
        variables: { _id: ownProps._id },
        optimisticResponse: {
          __typename: "Mutation",
          favoriteJob: {
            __typename: "Job",
            _id: ownProps._id,
            favoriteCount: ownProps.isFavorited
              ? ownProps.favoriteCount - 1
              : ownProps.favoriteCount + 1,
            isFavorited: !ownProps.isFavorited
          }
        }
      })
  })
};

В этом случае ownProps не сработает, но даже если я попробую что-то вроде props.navigation.state.params.job._id, произойдет сбой

Есть идеи, как лучше всего?

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