Профиль. js
Экран профиля извлекает свои данные из WebApi с использованием приставки и отображает изображение в соответствии с imageUrl. SelectImage () вызывает функцию для пользователей, чтобы открыть галерею и выбрать новое изображение.
После выбора изображения я бы хотел, чтобы изображение отображалось на экране и заменяло текущее значение this.props.items.imageUrl
, Я просто запустил Redux и внедрил его в свое приложение. Я хотел бы обновить состояние притока и быть доступным на других экранах, так как изображение будет отображаться и на других экранах. Однако я не могу изменить изображение внутри приложения.
Все данные находятся внутри элементы
<TouchableOpacity
onPress={() => this.selectImage()}>
<View style={styles.piccontainer}>
<Image
source={{ uri: this.props.items.imageUrl }}
style={styles.photo} />
</View>
</TouchableOpacity>
<TouchableOpacity style={styles.button}
onPress={() => {
this.uploadImage();
this.goBack()
}}>
<View>
<Text style={styles.text}>Save</Text>
</View>
</TouchableOpacity>
Это моя функция selectImage ()
selectImage = async () => {
let result = await ImagePicker.launchImageLibraryAsync({
mediaTypes: ImagePicker.MediaTypeOptions.All,
allowsEditing: true,
aspect: [4, 3],
quality: 1
});
let file = result.uri
if (!result.cancelled) {
this.updatePicture(file)
}
}
Я считаю, что мне нужно mapDispatchToProps
, чтобы вызвать действие.
function mapDispatchToProps(dispatch) {
return {
updatePicture: file => {dispatch(updatePicture(file))}
}
}
Я потерян после вызова функции, могу ли я поместить редукторы и действия в то же место, что и Я поставил функцию, которая выбирает данные профиля? Создаю ли я новый файл, но если я это сделаю, то как мне установить начальное состояние? Спасибо вам за помощь. Я очень ценю это.
profileReducer. js
const initialState = {
profilepic: '',
};
export default function updateprofileReducer(state = initialState, action) {
switch (action.type) {
case UPDATE_PICTURE:
return {
...state,
profilepic: action.payload.file
}
default:
return state;
}
}
profileAction. js
export const updatePicture = file => ({
type: UPDATE_PICTURE,
payload: file
})