reflect
v9.2.0
☄️將效應子存儲附加到無鉤子的反應組件中。
npm install @effector/reflect
# or
pnpm add @effector/reflect入門| API文檔
反思有什麼意義?
正是API設計,使用經典的HOC狀模式,您可以以有效且可組合的方式與效應器編寫React組件。
import { reflect , variant } from '@effector/reflect' ;
export function UserForm ( ) {
return (
< FormCard >
< Name />
< LastName />
< SubmitButton />
</ FormCard >
) ;
}
const Name = reflect ( {
view : Input ,
bind : {
value : model . $name ,
onChange : model . nameChanged ,
} ,
} ) ;
const LastName = reflect ( {
view : Input ,
bind : {
value : model . $lastName ,
onChange : model . lastNameChanged ,
} ,
} ) ;
const SubmitButton = reflect ( {
view : Button ,
bind : {
type : 'submit' , // plain values are allowed too!
disabled : model . $formValid . map ( ( valid ) => ! valid ) ,
onClick : model . formSubmitted ,
} ,
} ) ;在這裡,我們將該組件分為小零件,這些部分是使用reflect運算符以方便的方式創建的,這是對props -> values映射的非常簡單的描述,這更容易讀取和修改。
借助@effector/reflect ,我們的$formValid更新只會導致提交班頓重新渲染,對於我們<UserForm />的所有其他部分,實際上將有零react的工作。
要了解更多信息,請閱讀完整的動機文章。