# Velocity Builder - Figma plugin 影片心得 > 1. 支援的 CSS 使用? > 2. 會影響設計師的工作職責嗎?(e.g. 像是需要對 Tailwind 或 CSS-in-JS 有多少瞭解?) > 3. 如何根據商業邏輯調整「UI 設計」與「邏輯切割」? > 4. 預估會如何使用?是 Figma plugin 嗎? ### 通用各種 Framework & CSS 撰寫方式 - 可以直接在 prompt 提出多方面的改善 - prompt 甚至可以完全靠滑鼠輸出「改善的需求」,UI 上會提供建議 - Pulgin 可以整合 builder.io 的開發 dev web (可以想像像 Storybook 會 build 一個網站),可以讓不同 department 的人「使用非 coding 的方式」同步修改 ### 轉化 mitosis 成各種 Framework 的 component 1. 需要有固定格式: 1. export method 固定: export default function Component 2. props 如果直接解構會 parse 錯誤 3. mitosis 的 component 固定要為 Component.lite.(js|jsx|tsx) 2. 提供[各種 hook](https://github.com/BuilderIO/mitosis/blob/403811679ff42b6ead0e76ed70122e8f0a07a85d/docs/hooks.md?plain=1#L18) 來產生對應的互動行為 1. 以 React 來說,要做到 ref 的綁定也有類似的 API 2. onMount 會對應到 沒有 dependencies 的 array、 onUpdate 會對應到有特定 dependencies 的 array 3. useStore 的每一個 object 如果是 primitive value,則會被當作 state,如果是 get 或 function,會被當作 function 3. 官方有提供 [ESLint](https://github.com/BuilderIO/mitosis/tree/main/packages/eslint-plugin) 來確保寫出的 framework component 或 mitosis component 能有效被轉換 ### 嘗試 mitosis 轉換出 React Component: React hook 的使用時機很看重開發者的判斷,它無法很清楚知道 state 要如何 update;目前在支援 useMemo ([issue](https://github.com/BuilderIO/mitosis/issues/857)) 或 useCallback 上還不齊全,期待未來有更符合 React 做 reactive 和 performance 處理的能力。 ```ts // src/components/Person.lite.tsx function Person() { const state = useStore({ name: 'Builder', info: { name: '', age: 0 } }) function updateState(name:string,age:number) { state.info.name = name state.info.age = age } onUpdate(()=>{ console.log(state.name) updateState(state.name, 30) },[state.name]) return <input type='text' onChange={(e)=>{state.name = e.target.value}}/> } // output/react/src/components "use client"; import * as React from "react"; import { useState, useEffect } from "react"; function Person(props) { const [name, setName] = useState(() => "Builder"); const [info, setInfo] = useState(() => ({ name: "", age: 0, })); // 沒有機制判斷需不需要需要 useCallback,因此會有框架差異 function updateState(name, age) { // 沒有正確使用 hook info.name = name; info.age = age; } useEffect(() => { console.log(name); updateState(name, 30); }, [name]); return ( <input type="text" onChange={(e) => { setName(e.target.value); }} /> ); } export default Person; ```