セットアップ
関数はどこにありますか? 実装関数の名前がわからないので、ChatGPT に尋ねました:
ChatGPT は、setup
関数が packages/runtime-core/src/component.ts
ファイルにあることを示します。ご存知のとおり、runtime-core
は Vue3 のランタイム コア コードです。中に入って見てみましょう。
記述によると、setupComponent
関数と createComponentInstance
関数は見つかりましたが、setupRenderEffect
関数は見つかりませんでした。 2021 予備知識として、Vue3 コードには多くの変更が加えられていますが、それは問題ではありません。これはあまり影響しません。
ChatGPT は、setupComponent
関数が createComponentInstance
関数で実行されることを教えてくれました。createComponentInstance
は名前を見てコンポーネント インスタンスを作成します。詳細なコードを見てください。
ChatGPT に直接コピーします:
ChatGPT の説明に従ってコードを読み、createComponentInstance
がインスタンスを作成したばかりであることがわかりました。コンポーネントとリターン。上で述べたように、関数内で setupComponent
を実行しません。愚かな ChatGPT。
次に、setupComponent
が呼び出される場所を見つけます。
packages/runtime-core/関数名を検索すると、すぐに見つかります。
packages/runtime-core/src/renderer.ts ファイルの
mountComponent 関数内。
mountComponent はコンポーネントをマウントするメソッドであり、その前に多数のカスタム レンダラー ロジックがありますが、ここでは説明しません。
const mountComponent: MountComponentFn = (...args) => { const instance: ComponentInternalInstance = compatMountInstance || (initialVNode.component = createComponentInstance( initialVNode, parentComponent, parentSuspense )) // ... 省略代码 // resolve props and slots for setup context if (!(__COMPAT__ && compatMountInstance)) { // ...这里调用了setupComponent,传入了实例,还写了注释,感人 setupComponent(instance) } // setupRenderEffect 居然也在这 setupRenderEffect( instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized ) }
mountComponentこの関数は、まず
createComponentInstance を呼び出し、コンポーネント インスタンスを返し、次にそのインスタンスをパラメーターとして
setupComponent に渡します。ちなみに、ChatGPT が失った
setupRenderEffect 関数もここで発見しました。これは、レンダリングの副作用を処理するために使用されます。
setupComponent 関数に戻ると、Evan のコメントによれば、この関数はプロップとスロットを処理することがわかります。
export function setupComponent( instance: ComponentInternalInstance, isSSR = false ) { isInSSRComponentSetup = isSSR const { props, children } = instance.vnode const isStateful = isStatefulComponent(instance) initProps(instance, props, isStateful, isSSR) initSlots(instance, children) const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : undefined isInSSRComponentSetup = false return setupResult }
setupComponent 関数内で、プロパティとスロットを処理した後、ステートフルです
setupStatefulComponent というコンポーネント。
setupStatefulComponent 全体を ChatGPT に直接フィードします:
handleSetupResult および
finishComponentSetup を呼び出してレンダリング関数を返すことです。 。レンダリングロジックから始めましょう。
以上がChatGPT に Vue3 ソース コードを解釈させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。