arcthur / react-book-examples

深入 React 技术栈一书中示例

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

01 例子中 Tabs组件 onChange 函数的问题

aaronisme opened this issue · comments

你好,我在阅读第一个例子中,有一个问题,
https://github.com/arcthur/react-book-examples/blob/master/01/js/Tabs.js#L63
在这里调用了下onChange的方法。
但是在 defaultProps里 onChange就是一个空的箭头函数。
https://github.com/arcthur/react-book-examples/blob/master/01/js/Tabs.js#L22

书中写到。

我们在Tabs组件中设计了切换tab时的onChange 函数,通过传递 onChange prop到 TabNav子组件中,在子组件中完成对节点上事件的绑定
// 更新后执行回调函数,抛出当前和上一次索引(comments里)

我的问题是传递到TabNav组件的方法是handleTabClick方法,这里onChange如果是更新后执行的回调函数,抛出当前和上一次索引,是抛给谁了?

我尝试着将onChange方法在handleTabClick里去了,也没有什么错误。

没有搞懂onChange函数的作用,盼回复,多谢

onChange 就是回调函数,是Tab 组件切换时父组件可以拿到 Tab 的状态。

不好意思,没太理解。Tabs组件上已经定义了handleTabClick方法,并通过props已经传到了TabNav组件上。当TabNav上有onClick事件发生时,通过handleTabClick方法,Tabs组件已经可以知道Tab的状态了。不太明白这个OnChange的回调的作用是什么?

第一个问题,Tabs 定义的 handleTabClick 是传入到 TabNav 里用的,也就是这里的 handleTabClick 对于 Tabs 就是起一个传递作用,但调用 Tabs 组件的父组件是感知不到 TabNav 的,所以回调还是从 Tabs 里传进去一直传到 TabNav。
第二个问题,空箭头函数相关于初始化一个空的函数,默认是没有回调的,这里不写也可以

@arcthur 多谢解答,意思我是理解了。默认是没有回调的,但是如果需要是可以从Tabs组件的父组件传一个nChange回调进来,这样父组件就可以拿到Tab的状态,做相应的一些处理的。多谢多谢