Javascript 在React Admin中保存来自自定义组件的更改

Javascript 在React Admin中保存来自自定义组件的更改,javascript,reactjs,react-admin,react-codemirror,Javascript,Reactjs,React Admin,React Codemirror,如何将自定义组件的输出保存回React管理模型 我有一个带有一个自定义组件的表单,它是一个CodeMirror字段。对其他所有内容的更改都会正确保存。但是,我的CodeMirror字段作为编辑器正常工作,并根据需要进行配置,但不会保存更改 我是React管理员的新手,在React方面经验有限,所以我想我缺少一些基本的东西 const handleChange=(字段)=>(val,evt)=>{ //我到达这里时,将'field'设置为MyEditField的实例,并使用'val'` //设置为

如何将自定义组件的输出保存回React管理模型

我有一个带有一个自定义组件的表单,它是一个CodeMirror字段。对其他所有内容的更改都会正确保存。但是,我的CodeMirror字段作为编辑器正常工作,并根据需要进行配置,但不会保存更改

我是React管理员的新手,在React方面经验有限,所以我想我缺少一些基本的东西

const handleChange=(字段)=>(val,evt)=>{
//我到达这里时,将'field'设置为MyEditField的实例,并使用'val'`
//设置为更新的编辑器值,并“evt”调用CodeMirror事件
//但是现在如何更新底层记录?
//以下内容将更新存储的副本,但不会将其标记为更改
//由数据提供者保存。(我知道这对Redux没有意义。)
field.props.record.myField=val;
}
类MyEditField扩展组件{
建造师(道具){
超级(道具)
this.value=美化(props.record[props.source]);
//代码镜像设置
this.options={/*代码镜像选项*/}
}
render(){
返回(
)
}  
}
导出默认的addField(MyEditField)
我在这里突出显示
handleChange
,不是因为我认为这是我认为该更改的地方,而是为了证明如果我需要一个地方来挂起正确的代码,我有一个地方。一个
onBlur
可能会更好。这里的要点是,我确实有办法通过访问我的字段和CodeMirror实例来运行我需要的任何代码

(当前版本的
handleChange
似乎有点奇怪,但这是必要的,因为我正在使用的CodeMirror包装器和React Admin的某些组合似乎正在丢失我的
引用,即使我使用了
bind(this)
。但我输入该函数时正确设置了
字段

这里的CodeMirror似乎一切正常。我想我只需要知道如何使变化正确地反映出来

我不知道它是否相关,但我正在使用。

这在

您需要使用新值从redux form
input
调用
onChange
函数。此
输入是向组件注入的属性

顺便说一下,读取值也是如此。不要检查记录,因为它只会是初始记录。使用
输入值

比如:

const MyEditField = ({ input }) => (
    <CodeMirror 
        ref="CodeMirror" 
        value={beautify(input.value)} 
        onChange={val => input.onChange(val)} 
        options={{
            // Options
        }}
    />
)

export default addField(MyEditField)
constmyeditfield=({input})=>(
input.onChange(val)}
选择权={{
//选择权
}}
/>
)
导出默认的addField(MyEditField)

非常感谢。我一直在使用RA取得巨大成功,除了这个问题,这让我疯狂了好几天。顺便说一句,我在文档中没有看到任何关于
onChange
的内容。这可能是一些我仍然缺少的基本知识,但它确实让我感到困惑,即使在我反复阅读这一部分的时候。(这些文档总体上给我留下了深刻的印象。我就是找不到这个。)非常感谢您的帮助。是的,我们没有介绍react、redux或redux表单是如何工作的。你必须检查他们的文件。很高兴您感谢我们的文档:)