React-Native如何给方法一个变量

时间:2018-11-13 19:47:29

标签: react-native

我正在尝试更改状态中的变量,因此稍后将其作为属性提供给组件,但是我似乎无法更改该变量。

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显示更多给定的信息。

如果不清楚或需要更多信息,只需询问

谢谢您的时间。

2 个答案:

答案 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}