@dim5on

Как с помощью одной функции обновлять несколько значений state?

У меня есть такой state:

state = {
    photos : {
      driverPhoto : null,
      passportPhoto : null,
      driverLicensePhoto: null,
    },
  };

Есть функция, которая вызывает camera roll и устанавливает в state выбранную картинку:

useLibraryHandler = async () => {
    await this.askPermissionsAsync();
    let result = await ImagePicker.launchImageLibraryAsync({
      allowsEditing: true,
      aspect: [4, 3]
    });
    this.setState({ photos : { ...this.state.photos, driverPhoto : result.uri } });
  };

Вот элемент, который вызывает функцию:

<TouchableHighlight onPress={this.useLibraryHandler}></TouchableHighlight>

Как переписать функцию, чтобы её можно было вызывать к примеру вот так?
Чтобы функцию можно было использовать в разных местах и обновлять разные элементы state.

<TouchableHighlight onPress={this.useLibraryHandler('driverPhoto')}></TouchableHighlight>
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
AlexKeller
@AlexKeller
Так и передайте отдельным пропсом имя конкретного элемента:
<TouchableHighlight onPress={this.useLibraryHandler} photoType="driverPhoto" />
Никаких замыканий не нужно будет, просто читаем переданную строку.
let newPhotos = {...this.state.photos};
newPhotos[this.props.photoType] = result.uri;
this.setState({ photos : newPhotos });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы