es6 setprops不是一个函数

时间:2016-04-19 08:20:43

标签: reactjs react-native ecmascript-6

class MyComponent {
    constructor(props){
        super(props);
    }
    render() {
        return <View />
    }
}

class Test() {
    constructor(props){
        super(props);
        this.onClick = this.onClick.bind(this);
    }

    onClick() {
        this.my.setPorps({
            show: true,
        });
    }

    render(){
        return <MyComponent ref={ ref => this.my = ref }/>
    }
}

如果我触发onClick功能,则会导致:

  

undefined不是一个函数(评估&#39; _this3.progressbar.setProps({                                                                   禁用:真})&#39)

任何人都可以帮助我吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

来自React docs:

  

此方法已弃用,很快就会删除。扩展React.Component的ES6类组件不提供此方法。而不是调用setProps,尝试使用新的道具再次调用ReactDOM.render()。

https://facebook.github.io/react/docs/component-api.html#setprops

(同样在你的例子中拼写它setPorps,但它无论如何都不会起作用)

看起来你只想告诉组件展示自己,在这种情况下,父状态可以更新并作为道具传递给孩子:

class Test() {
    constructor(props){
        super(props);
        this.state = {
            show: false
        };
        this.onClick = this.onClick.bind(this);
    }

    onClick() {
        this.setState({
            show: true
        });
    }

    render() {
        return <MyComponent show={this.state.show} />
    }
}