我有一个屏幕,我想要有4张图像。
我怎样才能做到这一点,当我点击图像时,它会从阵列进入下一个(我想这就是它的制作方式)。我还希望有按钮可以转到下一张图像,或者除了触摸之外还可以返回上一张图像。
我希望有人可以帮助我。我不知道如何处理它。我想找到实现它的最佳方法。
谢谢!
更新: 一切顺利,感谢Codesingh的回答!
答案 0 :(得分:3)
我认为你有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>
)
}
}
编辑在这里:
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})
}
}
干杯:)
答案 1 :(得分:0)
你也可以通过对@ Codesingh的答案进行一些小修改来使其成为一个无限循环。我还将其更改为不具体到你拥有的图像数量,并按照推荐的JS编码标准正确格式化:
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>
)
}
}