我正在尝试更改状态中的变量,因此稍后将其作为属性提供给组件,但是我似乎无法更改该变量。
junit-jupiter-api
我通过FlatList调用了renderItem函数
constructor(){
super();
this.state = {
dataSource: [],
reading: false,
iName: 'default'
};
this.startRead = this.startRead.bind(this);
}
startRead = ({item}) => {
this.setState({
reading: true,
iName: {item.name} //it doesn't work over here
});
}
renderItem = ({item}) => {
this.setName
return(
<TouchableOpacity style={{flex: 1, flexDirection: 'row', marginBottom: 5}} onPress={this.startRead}>
<Text>{item.name}</Text> // this does work
<Text>{item.desc}</Text>
</TouchableOpacity>
);
}
它给我一个错误 “ SyntaxError:App.js:意外令牌,应为','(21,24)”
(21,24)给出这一行
iName:{item.name}
我在做什么错了?
目标是;当我按下FlatList的项(也称为 this.state.reading ?
<ReadScreen iname={this.state.iName}/>
:
<View style={styles.slide}>
<FlatList
data={this.state.dataSource}
renderItem={this.renderItem}
/>
</View>
)时,它将呈现ReadScreen,该ReadScreen通过属性而不是FlatList显示更多给定的信息。
如果不清楚或需要更多信息,只需询问
谢谢您的时间。
答案 0 :(得分:0)
替换此行
onPress={this.startRead}
此行
onPress={() => this.startRead({item})}
这是完整的解决方案
renderItem = ({item}) => {
this.setName
return(
<TouchableOpacity style={{flex: 1, flexDirection: 'row', marginBottom: 5}} onPress={() => this.startRead({item})}>
<Text>{item.name}</Text> // this does work
<Text>{item.desc}</Text>
</TouchableOpacity>
);
}
答案 1 :(得分:0)
使用iName: item.name
代替iName:{item.name}