Как очистить поле аватара localStorage только при загрузке аватара?реагировать - PullRequest
0 голосов
/ 27 ноября 2018

Привет всем, когда я меняю аватарку в моем проекте.Я могу загрузить успешно, но из-за данных localStorage не меняется.Я так пытался;

this.state = {
  imageUrl: props.user && props.user.avatar,
};

моя функция, как это

changeAvatar() {
  const profileDetail = cloneDeep(JSON.parse(localStorage.getItem('__PERSISTED_STORE__')));

  const isProfileDetailExist = profileDetail
    && profileDetail.user
    && profileDetail.user.signIn
    && profileDetail.user.info;

  if (isProfileDetailExist) {
    profileDetail.user.signIn.info.avatar = this.state.imageUrl;
  }

  localStorage.setItem('__PERSISTED_STORE__',
    JSON.stringify({
      user: profileDetail.user,
      language: profileDetail.language
    })
  );
}

как я могу это сделать.Мои данные выглядят как;

Предпочтения: {user: {singIn: {info: {..... аватар внутри.Я хочу изменить только аватар.язык: ...

1 Ответ

0 голосов
/ 27 ноября 2018

Проблема в том, как вы устанавливаете свое состояние

    this.state = {
  imageUrl: props.user && props.user.avatar,
};

Из вашего кода imageUrl является логическим значением.Если вы хотите назначить местоположение аватара (которое является строкой), вы должны использовать

this.state = {
  imageUrl: props.user && props.user.avatar ? props.user.avatar: '',
};

, который установит состояние imageUrl в props.user.avatar, если props.user.avatar && props.user имеет значение true.

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