是否可以在Strapi v4中创建具有用户定义类型的自定义组件?



我是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类型。

最新更新