-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
原理的疑惑 #20
Comments
@army8735 这个地方的表述不准确。 准确的过程是这样的(我稍后会更新这个文档)
每一个 wxml文件上面 都会存在一个 name 为childTemp的template。 这个template会值对不同的情况,分别处理。 |
所以对应JSX children的每一个“变量值”(可能是类似上面的b, 可能是方法调用。。。等等)。 都会先用childTemp占位, 然后具体childTemp渲染的结构,由运行期这个“变量值”的运行结果确定。上面的这个b,可能在这次渲染的时候是个字符串,也可能下一次渲染就是JSX了。 |
如果b不是jsx数组是个普通数组呢? |
在 childTemp 加了一行 😃😃😃
|
还有个疑惑,template里child0001、child0002是按深度遍历顺序出现? class App extends React.Component {
render () {
const a = <Text>a</Text>;
const b = <Text>b</Text>;
return (
<View>
{b}
<View>{a}</View>
123
</View>
);
}
}
export default App; 这样template和js中uiDes对象会是如何? |
本身render的收集是递归程序。所以是深度遍历的。 我大概贴一下真实的转化结果
uiDes 大概是
|
看到一个更进一步的思路,不需要自己做uiDes的逻辑,直接利用react自己最终render返回的虚拟dom,然后用template递归遍历dom和dom的children渲染 |
能具体说一下这个思路么 @army8735 , 不知道template这样递归渲染,粒度这么细的话,不知道会不会有性能方面的问题。:smiley::smiley::smiley: |
https://areslabs.github.io/alita/%E4%B8%80%E7%A7%8D%E8%AE%A9%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%94%AF%E6%8C%81JSX%E8%AF%AD%E6%B3%95%E7%9A%84%E6%96%B0%E6%80%9D%E8%B7%AF.html
官网这篇文章中有介绍原理,但是其中有一处有疑惑。
预编译时期是怎么知道000002的View里面包含的是个template的,即b的值?
The text was updated successfully, but these errors were encountered: