Route里面的component、render

好坑,好坑。

1.之前看过几篇文章,说component和render都可以传一个inline function,component只返回三个参数,render除了三个,还可以传入自定义的参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<Route
key={item.path}
path={item.path}
render={(props: any) => SetInfo(item, props)}
exact
/>

<Route
key={item.path}
path={item.path}
component={(props: any) => SetInfo(item, props)}
exact
/>

const SetInfo = function(item: any, props: any) {
return <item.component {...props} keyWords="hahah" meta={item.meta} />;
};

component:

render:

返回都是一样的,我感觉自己受到了欺骗。

2.由于我设置了一个方法,每次路由改变的时候,就会setState;用render的话就会报一个警告:

点解?百度了一下说,是因为在组件render的时候,又setState,才导致报这个错。

3.把render属性换成component就解决了这个报错。点解嘅?
4.可能的原因

(1)如果两者都传入匿名函数,component会使用React.createElement,建立一个组件;render的话会直接执行匿名函数,并渲染函数return的函数。
(2)component每次都是全新的渲染和调用,render的话就只改变state

5.未完待续