基本渲染道具转换为试剂
Basic Render Props Translation to Reagent
所以我正在尝试使用试剂渲染 MUi 自动完成功能。这是我的尝试
(def options
(clj->js
[{:title "title" :year 1990}
{:title "title2" :year 2990}]))
(defn autocomplete-text-field []
[:> TextField
{:label "Headers"
:id "header"
:variant "outlined"
:fullWidth true }
]
)
(defn add-header-form []
[:> Card
{:style #js {:max-width 1000}}
[:> CardHeader {:title "Add Header"}]
[:> CardContent
[:> Grid
{:container true
:direction "column"}
[:> Autocomplete
{
:renderInput (r/reactify-component autocomplete-text-field)
:options options
:getOptionLabel #(get % :year)}
]
]
]]
)
我试过直接传递它的意思:renderInput autocomplete-text-field
但是没弄明白。我正在尝试翻译 Mui 页面中的示例:
https://material-ui.com/components/autocomplete/
编辑
<Autocomplete
options={top100Films}
getOptionLabel={(option: FilmOptionType) => option.title}
style={{ width: 300 }}
renderInput={params => (
<TextField {...params} label="Combo box" variant="outlined" fullWidth />
)}
/>
那么我想要的是如何为 renderInput 属性 编写等效的试剂代码?
提前致谢。
renderInput
需要一个 returns React 元素的函数。
您可以通过
在reagent
中做到这一点
:renderInput (fn [params] (r/as-element [autocomplete-text-field params]))
params
很可能是一个 JS 对象,这意味着您可能需要一些 JS 互操作来将任何道具应用到文本字段。不知道传的是什么params
所以我正在尝试使用试剂渲染 MUi 自动完成功能。这是我的尝试
(def options
(clj->js
[{:title "title" :year 1990}
{:title "title2" :year 2990}]))
(defn autocomplete-text-field []
[:> TextField
{:label "Headers"
:id "header"
:variant "outlined"
:fullWidth true }
]
)
(defn add-header-form []
[:> Card
{:style #js {:max-width 1000}}
[:> CardHeader {:title "Add Header"}]
[:> CardContent
[:> Grid
{:container true
:direction "column"}
[:> Autocomplete
{
:renderInput (r/reactify-component autocomplete-text-field)
:options options
:getOptionLabel #(get % :year)}
]
]
]]
)
我试过直接传递它的意思:renderInput autocomplete-text-field
但是没弄明白。我正在尝试翻译 Mui 页面中的示例:
https://material-ui.com/components/autocomplete/
编辑
<Autocomplete
options={top100Films}
getOptionLabel={(option: FilmOptionType) => option.title}
style={{ width: 300 }}
renderInput={params => (
<TextField {...params} label="Combo box" variant="outlined" fullWidth />
)}
/>
那么我想要的是如何为 renderInput 属性 编写等效的试剂代码?
提前致谢。
renderInput
需要一个 returns React 元素的函数。
您可以通过
在reagent
中做到这一点
:renderInput (fn [params] (r/as-element [autocomplete-text-field params]))
params
很可能是一个 JS 对象,这意味着您可能需要一些 JS 互操作来将任何道具应用到文本字段。不知道传的是什么params