我是strapi的新手,并试图创建一个自定义组件来根据来自另一个系统的API响应呈现一些HTML复选框。基本上,复选框列表将被添加到表单中(这是另一个strapi组件)。到目前为止我所做的是
- 基于此文档添加了一个Strapi插件:https://strapi.io/blog/how-to-create-a-strapi-v4-plugin
- 在插件(
/src/plugins/CheckboxList/admin/src/components/CheckboxList
)中添加了一个react组件。虽然最终目标是获得复选框列表,但为了测试目的,添加了一个文本输入字段。 - 将组件注册到
app.addFields([
{
type: "checkbox_list",
Component: CheckboxList,
},
]);
方法在(/src/plugins/CheckboxList/admin/src/index.js
)
- 在一个名为
field
的现有组件中添加组件,代码如下:
// in field.json
"checkbox_list": {
"type": "checkbox_list",
"columnType": "longText"
}
目前,文本框在strapi admin上的内容管理器的集合中可见,并且根据我的检查,文本框中的更新数据也传递给react props。然而,我没有看到数据被保存在strapi平台上。是我遗漏了什么还是做错了什么?或者它真的不可能在strapi v4中创建一个自定义组件,在自定义字段中插入数据?
需要帮助。提前谢谢。
在等待自定义字段规划(https://github.com/strapi/rfcs/pull/42)正式发布之前。您可以参考strapi (https://www.youtube.com/watch?v=55KJ2sCX8ws)提供的youtube示例。或者您可以在(https://github.com/samMeow/strapi-v4-custom-field-example)
中找到代码示例。基本思想是将字段注册为v3,但您还必须使用预定义的Hooks(在官方文档中没有太多细节)来改变编辑视图。这样strapi BE仍然保存为columnType
,但渲染不同。
例如,在您的情况下,您可以将checkbox_list
作为longtext
类型,并添加一些可识别的参数,如pluginOptions.columnType
作为checkbox_list
。然后在MutateEditViewLayout阶段,选择这些参数并将其更改为checkbox_list
类型。