我一直致力于专注于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不是一个函数” 我搜索过很多文章,但找不到解决办法 有什么想法吗?
答案 0 :(得分:1)
componentDidMount不保证在调用componentDidMount之前调用ref prop。您应该将componentDidMount代码更改为以下内容:
componentDidMount() {
requestAnimationFrame(()=>{
this.listView.focus()
})
}
此外,如果您决定使用requestAnimationFrame函数。最好使用TimerMixin来使用它(参见TimerMixin doc)。使用react-mixin按照TimerMixin doc中的建议在ES6中实现Mixin。