Итак, немного контекста: он извлекает локальную ссылку на изображение из firebase, затем предполагается, что при нажатии на маркер устанавливается установленное изображение на странице, значения изображения работают для маркеров, но установленное в представлении вне возврата не работает говоря, что это неопределенная переменная, также журнал консоли также показывает правильное значение. Я удалил все ненужные части кода, чтобы он выглядел как можно более легко читаемым.
export class HomeScreen extends Component {
constructor(props) {
super(props);
this.state = {
image: '',
};
}
render() {
return (
<View style = {styles.container}>
<MapView>
{this.state.data.map((obj, index) => {
return (
<MapView.Marker
key = {index}
onPress = {() => {
this.setState({ image: obj.image });
let { value } = 'require(' + obj.image + ')';
console.info(value);
}}>
<Image source = {require(obj.image)} style = {styles.pet} />
</MapView.Marker>
);
})}
</MapView>
<View style = {styles.petinfo}>
<Image style = {styles.locpetimg} source = {value} />
</View>
</View>
);
}
}
export default withNavigation(HomeScreen);
что это this.state.data? никогда не увидите, как вы объявляете или назначаете какой-либо массив
Переменная стоимость возвращает значение undefined при попытке установить исходное изображение, все остальное работает нормально. Я удалил ненужный код, потому что это довольно большой компонент.
Не рекомендуется использовать функции стрелок для событий в разделе render(). Каждый рендер будет создавать новую функцию.
Вы пытаетесь использовать «значение», установленное с помощью «onPress» внутри <Image/> ?? это невозможно, так как это выходит за рамки



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


export class HomeScreen extends Component {
constructor(props) {
super(props);
this.state = {
image: '',
data:[]
};
}
render() {
return (
<View style = {styles.container}>
<MapView>
{this.state.data.map((obj, index) => {
return (
<MapView.Marker
key = {index}
onPress = {() => {
this.setState({ image: obj.image });
let { value } = 'require(' + obj.image + ')';
console.info(value);
}}>
<Image source = {require(obj.image)} style = {styles.pet} />
</MapView.Marker>
);
})}
</MapView>
<View style = {styles.petinfo}>
<Image style = {styles.locpetimg} source = {value} />
</View>
</View>
);
}
}
export default withNavigation(HomeScreen);Вы пытаетесь использовать «значение», установленное с «onPress» внутри <Image/> ?? это невозможно, так как это выходит за рамки. попробуйте что-то вроде
export class HomeScreen extends Component {
constructor(props) {
super(props);
this.value = null;
this.state = {
image: '',
};
}
render() {
return (
<View style = {styles.container}>
<MapView>
{this.state.data.map((obj, index) => {
return (
<MapView.Marker
key = {index}
onPress = {() => {
this.setState({ image: obj.image });
this.value = 'require(' + obj.image + ')';
console.info(value);
}}>
<Image source = {require(obj.image)} style = {styles.pet} />
</MapView.Marker>
);
})}
</MapView>
<View style = {styles.petinfo}>
<Image style = {styles.locpetimg} source = {this.value} />
</View>
</View>
);
}
}
export default withNavigation(HomeScreen);
Здесь я сохраняю значение в переменной-члене класса, а затем использую его.
Какая переменная предположительно
undefined? Откуда в вашем коде эта ошибка?