如何在Keystone Admin中填充自定义React组件

时间:2018-02-22 14:15:42

标签: node.js mongodb reactjs express keystonejs

我们第一次使用Keystone(版本4.0.0-beta.8)作为我们的Node.js CMS,我们非常喜欢它。但是,我们遇到了CMS的一个重要缺失功能,即在管理员视图中添加自定义组件

我们希望实现的是将自定义React组件添加到其中一个 Keystone管理界面,并使用field watch function

中的数据填充它

此组件应仅对其中一个列表模型可见。现在,唯一的方法是编辑其中一个核心文件:

{(this.props.params.listId === 'my-list-model') ? (
    <MyComponent>{this.props.params.listId}</MyComponent>
) : null }

并在其周围添加一些条件渲染:

import keystone from 'keystone';
import { someFunction } from './myFunctions';

var MyListModel = new keystone.List('MyListModel', {
   map: { name: 'title' },
});

MyListModel.add({
   title: { type: String, required: true },
   data: { type: Types.Code, language: 'json', watch: 'title', value: watchTitle, noedit: true },
});

MyListModel.register();


function watchTitle(callback) {
    if (this.title) {
        function cb(error, result) {
            if (result) {
                // Send result to React Component in Admin screen
            }
            callback(error, result);
        }
        someFunction(this.title, cb);
    } else {
        callback(null, '');
    }
}

这样可行,但由于您要覆盖核心文件,因此不适合使用。但是,如果我知道如何使用Keystone列表模型声明中的数据提供此自定义组件,我可以克服这个缺点:

在: /server/models/MyListModel.js

this.storage.clear();

有没有人遇到同样的问题,或者有任何线索如何在Keystone的反应管理视图中将数据发送到自定义组件?

非常感谢!

0 个答案:

没有答案