リストビューが異なる単一のページが必要です。私はあなたがやろうとしているかわからないんだけど、私はあなたの問題の一つは、ということだと思います異なるリストビューのイベントを処理するときにsetStateが更新されない
var width = Dimensions.get('window').width - 20;
var page = 6;
class FeedUserGrid extends Component {
constructor(props) {
super(props);
var ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => r1 != r2
});
this.state = {
dataSource:ds,
searchString:'',
search_result:PropTypes.node,
test_item:PropTypes.node,
loaded: false,
width: (width/3),
height:(width/3) ,
backgroundColor:'#ededed',
marginTop:5,
marginBottom:5,
marginRight:5,
marginLeft:5,
alignItems:'center',
borderRadius:10,
borderColor:'black',
borderWidth:0.1,
};
}
fetchDataPhoto() {
fetch('https://Example.com/..........')
.then((response) => response.json())
.then((responseData) => {
this.setState({
search_result:responseData,
'loaded': true
});
this.setState({
dataSource:this.state.dataSource.cloneWithRows(this.state.search_result),
});
})
.done();
}
renderRow(rowData){
return (
<View style={{
width: this.state.width,
height: this.state.height,
}}>
<View style={ styles.s }>
<Text style={styles.price}>userId:{rowData.userId}</Text>
<Text style={styles.Itemtitle}>id:{rowData.id}</Text>
<Text style={[styles.Itemtitle]}>title:{rowData.title}</Text>
</View>
</View>
)
}
renderScene(route, nav) {
<ScrollView ref="scrollView" style={{flex: 1, position:'absolute',top:50,left:0,right:0,bottom:50}} >
{
this.state.loaded &&
<ListView
contentContainerStyle={{
flex: 1,
flexDirection: 'row',
flexWrap: 'wrap',
justifyContent: 'center',
alignItems:'center'
}}
dataSource={this.state.dataSource}
renderRow={this.renderRow.bind(this)}/>
}
</ScrollView>
// handling event ChangeItemSize, I need different view I writen below.
<TouchableOpacity onPress={this.changeItemSize.bind(this)}>
<View style={[styles.selectedItemView]}>
<Icon name="cutlery" style={[styles.iconItemSetting,styles.navBarBottomIcon,styles.selectedItem]} />
</ View>
</ TouchableOpacity>
}
// different view for updating setState Style changing hight and width
changeItemSize(){
page+=1
if(page == 11){
page = 6;
}
switch (page) {
case 6:
this.setState({
width: width/3 - 20,
height: width/3 - 20,
});
break;
case 7:
this.setState({
width: width/1,
height: width/4 - 20,
});
break;
case 8:
this.setState({
width: width/1,
height: width/3,
});
break;
case 9:
this.setState({
width: width/1,
height: width/2,
});
break;
case 10:
this.setState({
width: width/1,
height: width/1.3,
});
break;
default:
this.setState({
width: width/3 - 20,
height: width/3 - 20,
});
break;
}
}
状態のキーは 'String'であってはなりません。 'Object'でなければなりません。 'loaded ':' loaded:true'のように引用符を削除する必要があります。 –