React Native:我如何专注于ListView?

时间:2016-09-10 08:39:10

标签: reactjs react-native

我一直致力于专注于ListView组件 这是我的代码

class MyListView extends Component { 
    static propTypes = {
        navigator: PropTypes.object.isRequired,
    };

    componentDidMount() {
        this.listView.focus()
    }

    render() {
        return (
            <ListView
                ref={ref => { this.listView = ref }}
                contentContainerStyle={styles.listView}
                dataSource={cloneWithRows(listDataSource)}
                renderRow={(data) => <MyListViewCell
                    ...
                />}
            />
        )
    }
}
export default MyListView

但它只返回一个错误,如“this.listView.focus不是一个函数” 我搜索过很多文章,但找不到解决办法 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

componentDidMount不保证在调用componentDidMount之前调用ref prop。您应该将componentDidMount代码更改为以下内容:

componentDidMount() {
    requestAnimationFrame(()=>{
       this.listView.focus()
   })

}

此外,如果您决定使用requestAnimationFrame函数。最好使用TimerMixin来使用它(参见TimerMixin doc)。使用react-mixin按照TimerMixin doc中的建议在ES6中实现Mixin。