#react-native
#react-native
Вопрос:
Когда рендеринг компонента в первый раз this.props.navigation.getParam('Image')
становится неопределенным, so <Image>
принимает this.state.Image
, а когда this.props.navigation.getParam('Image')
не становится неопределенным, я принимаю это как изображение. Но когда я долго нажимаю на кнопку, я хочу отобразить значение по умолчанию как require('../Images/add2.png')
. Я не мог этого сделать. Любая помощь
state= {
Images : require('../Images/add2.png'),
}
render() {
return (
<View>
<TouchableOpacity onPressIn={() => this.setState({ buttonPress: 'short' })}
onLongPress={() => this.setState({ buttonPress: 'long' })}
onPressOut={() => {
const { buttonPress } = this.state;
if (buttonPress === 'short')
{
}
else if (buttonPress === 'long')
{
this.setState({ ButtonImage: require('../Images/add2.png') });
}
this.setState({ buttonPress: 'none' });
}}>
---------> <Image source={ this.props.navigation.getParam('Image') !== undefined ? { uri: this.props.navigation.getParam('Image') } : this.state.Images } style={{ height: 30, width: 30 }} />
</TouchableOpacity>
</View>
)
}
Ответ №1:
у вас может быть 2 <Image>
, один для ‘require’, один для uri.
return (
<View>
<TouchableOpacity
onPressIn={() => this.setState({ buttonPress: 'short' })}
onLongPress={() => this.setState({ buttonPress: 'long' })}
onPressOut={() => {
const { buttonPress } = this.state;
if (buttonPress === 'short'){
}
else if (buttonPress === 'long'){
this.setState({ ButtonImage: require('../Images/add2.png') });
}
this.setState({ buttonPress: 'none' });
}}>
{this.state.localImage?<Image source={ require('../Images/add2.png') } style={{ height: 30, width: 30 }} />
:
<Image source={ uri:this.state.image } style={{ height: 30, width: 30 }} />
}
</TouchableOpacity>
</View>
)
Сохранить вы хотите отобразить локальный файл (‘../Images /add2.png’), для которого this.state.localImage
установлено значение true, и сохранить URL-адреса в this.state.image
Комментарии:
1. this.props.navigation.getParam(‘Изображение’) не определено. Когда я отправляю prop этому компоненту, определяется this.props.navigation.getParam(‘Изображение’). если this.props.navigation.getParam(‘Изображение’) определено, я хочу установить мое изображение с помощью этого. Но когда долго нажимается кнопка, я хочу, чтобы она менялась как изображение по умолчанию. Проблема начинается здесь, this.props.navigation.getParam(‘Image’) все еще определен, поэтому он принимает это как изображение.
2. да, при длительном нажатии кнопки устанавливается
this.state.localImage
значение true! это приведет к исчезновению другого изображения и отображению изображения по умолчанию