React native React Native:如何制作图像数组
我有一个屏幕上,我想有4个图像 我怎样才能使它在单击图像时转到阵列中的下一个图像(我想这就是它的制作方式)。除了触摸屏之外,我还希望有按钮可以转到下一个图像或返回到上一个图像 我希望有人能在这方面帮助我。我不知道该怎么做。我想找到实现它的最佳方法 谢谢大家! 更新:React native React Native:如何制作图像数组,react-native,reactive-programming,react-native-ios,react-android,react-native-image,React Native,Reactive Programming,React Native Ios,React Android,React Native Image,我有一个屏幕上,我想有4个图像 我怎样才能使它在单击图像时转到阵列中的下一个图像(我想这就是它的制作方式)。除了触摸屏之外,我还希望有按钮可以转到下一个图像或返回到上一个图像 我希望有人能在这方面帮助我。我不知道该怎么做。我想找到实现它的最佳方法 谢谢大家! 更新: 多亏了Codesingh的回答,一切都正常了 我认为你有3张照片 请过目: var arr=[{image:require('image1')},{image:require('image2')},{image:requir
多亏了Codesingh的回答,一切都正常了 我认为你有3张照片 请过目:
var arr=[{image:require('image1')},{image:require('image2')},{image:require('image3')}];
Class CoolSlider extends component{
constructor(props)
{
super(props);
this.state = {
counter:0,
}
}
changeImage(button)
{
if(button == 1)
{
this.setState({counter: this.state.counter + 1})
}
else
{
this.setState({counter: this.state.counter - 1})
}
}
render()
{
let button1 = false,button2 = false;
if(this.state.counter == 0)
{
//make the previous button disable
button2=true;
}
if(this.state.counter == 2)
{
button1=true;
}
// if(arr.length == 1 )
// {
// button1=true;
// button2=true;
// }
return (
<View>
<Image source = {arr[this.state.counter].image} />
<TouchableHighlight disabled={button1} onPress = this.changeImage(1)>
<Text>
Next
</Text>
</TouchableHighlight>
<TouchableHighlight disabled={button2} onPress = this.changeImage(2)>
<Text>
Previous
</Text>
</TouchableHighlight>
)
}
}
干杯:)您还可以对@Codesingh的答案进行一点修改,使其成为一个无限循环。我还将其更改为不特定于您拥有的图像数量,并按照推荐的JS编码标准正确格式化: (注:未经测试)
const arr=[require('image1')、require('image2')、require('image3');
类扩展组件{
建造师(道具){
超级(道具);
此.state={
柜台:0,,
}
}
更改图像(按钮){
如果(按钮==1){
如果(this.state.counter==arr.length-1)this.setState({counter:0})
else this.setState({counter:this.state.counter+1})
}否则{
如果(this.state.counter==0)this.setState({counter:arr.length-1})
else this.setState({counter:this.state.counter-1})
}
}
render(){
让button1=false,button2=false;
if(this.state.counter==0){
//使“上一步”按钮禁用
按钮2=真;
}
if(this.state.counter==(arr.length-1)){
按钮1=真;
}
返回(
下一个
以前的
)
}
}
谢谢您的回答,但我有一个小问题,如果可能的话,请检查一下。我已经更新了我的帖子。非常感谢!请使用您正在使用的不同版本进行更新-您可以使用以下命令找到react native版本:react native-v
。还有,你有什么错误吗?很抱歉!这些是我正在使用的react:react-native cli:2.0.1 react-native:0.42.0版本。只有启用远程调试时,我才会收到错误。否则,只需一个白色屏幕,大约30秒后,应用程序停止响应并崩溃。我在错误的主要帖子中添加了两个截图。完整的一个太长了。快问。我试着让它像罗布在你下面建议的那样循环,但我似乎无法让它工作。你知道怎么做吗?我没有错误,只是不起作用。我想能够只需按下加号按钮和图像循环。其他一切都像你做的那样完美。谢谢当你按下加号按钮时,发生了什么?实际上什么都没有。只有减号按钮会转到上一个图像。但是加号没有任何作用。如果我像下面的罗布那样做。另外,如果在到达最后一张图像后按减号,它将不会循环。于是应用程序启动了。我可以点击两次减号按钮,然后什么也没有。问题是:如果(按钮==1){if(this.state.counter==arr.length-1)this.setState({counter:0})或者this.setState({counter:this.state.counter+1}),只要代码中的this.state.counter到达数组末尾,就将状态更改为0。。但是this.state.counter永远不会到达,因为它不会递增,并且只有当它进入注释中的上述if语句时才会递增,并且它永远不会到达内部,所以按钮不执行任何操作:)
changeImage(button) {
if(button == 1) {
//if you reach the end i.e below statement then counter 0
if (this.state.counter == arr.length - 1) this.setState({counter: 0})
else this.setState({counter: this.state.counter + 1})
}
//similarly if you reach the starting then counter will be at end of the
array
else {
if (this.state.counter == 0) this.setState({counter: arr.length - 1})
else this.setState({counter: this.state.counter - 1})
}
}
const arr = [require('image1'), require('image2'), require('image3')];
Class CoolSlider extends component {
constructor(props) {
super(props);
this.state = {
counter: 0,
}
}
changeImage(button) {
if(button == 1) {
if (this.state.counter == arr.length - 1) this.setState({counter: 0})
else this.setState({counter: this.state.counter + 1})
} else {
if (this.state.counter == 0) this.setState({counter: arr.length - 1})
else this.setState({counter: this.state.counter - 1})
}
}
render() {
let button1 = false,button2 = false;
if(this.state.counter == 0) {
//make the previous button disable
button2=true;
}
if(this.state.counter == (arr.length - 1)) {
button1=true;
}
return (
<View>
<Image source = {arr[this.state.counter]} />
<TouchableHighlight disabled={button1} onPress = this.changeImage(1)>
<Text>
Next
</Text>
</TouchableHighlight>
<TouchableHighlight disabled={button2} onPress = this.changeImage(2)>
<Text>
Previous
</Text>
</TouchableHighlight>
</View>
)
}
}