嵌套CheckBoxGroupInput的ReferenceInput行为异常

时间:2019-03-09 20:32:08

标签: reactjs graphql react-admin

我已经环顾了许多小时,尝试了各种方法,但是我为CheckBoxGroupInput看到的很多示例只是简单地列出了与之相关的选项的硬编码列表,这有点用处不大……我的情况是我有一个标签列表我希望能够与产品相关联,这是很常见的东西。

我需要从postgres数据库中获取该列表...并且该部分似乎都可以正常工作,并且当第一次在react-admin的创建屏幕上呈现时,我的列表看起来很正常...该控件如下所示

<ReferenceInput reference="ProductRealBenefit" source="realbenefits" sort={{ field: 'name', order: 'ASC' }}>
     <CheckboxGroupInput source="name" />                                                      
</ReferenceInput>

到目前为止一切都很好。

它按预期方式呈现我的列表。.我已按照ra_data_graphql_simple的格式设置了所有模式...出乎意料的是,一旦我单击其中一个标签,它就会立即发送一个向服务器请求具有等于单击的ID的筛选器值的allProductRealBenefit查询,并且它将该单击的标记的副本添加到列表中,从而由于重复的键错误而使控件中断...我不知道为什么会这样我仍然单击后发送请求,我没有尝试保存任何内容,只是汇编将与表单数据一起发送的标记以创建链接记录,并且在初始填充控件后我已经拥有了所有数据。

我猜测也许这不应该嵌套在ReferenceInput中,但是我看不到任何其他方式可以用数据库查询结果填充我的选择。我知道这是荒谬的通用功能,我需要找出一种在多个位置使用此功能的方法,因为该标记功能应该可以在多个资源中使用。.我也尝试使用AutocompleteArrayInput进行此操作,并且它存在类似的问题,所以我知道问题是我必须错过重要的一步。...如果有人可以指出正确的方向,那就太好了。我现在要回到文档中,看看我可以挖掘什么!

1 个答案:

答案 0 :(得分:0)

好的,我要回答我的另一个问题,以防有人像我问时一样倒置在这里……我只是不知道魔术在幕后做了些什么,所以我使用这个错误...我发现文档令人困惑

在上面的示例中,我的参考中的ProductRealBenefits是我的架构中具有realbenefits的一对多关系:[ProductRealBenefits] ...因此,我需要以下组件。

<ReferenceArrayInput label="Real Benefit Tags" source="realbenefitsIds" reference="ProductRealBenefit">
    <CheckboxGroupInput  optionValue="id" optionText="name" allowEmpty />
</ReferenceArrayInput>

ra_data_graphql_simple dataProvider中有一个小魔术,可以为您创建一个名为realbenefitsIds的项目,这就是您用作ReferenceArrayInput的源的内容,我试图使用实际的realbenefits数组对象,但这并不是会工作。我找不到任何好的示例,也找不到任何有关如何使它工作的正当解释...因此,最终是Redux Dev Tools在这里保存了我的培根。我必须跳过图服务器中的一些环,以使数据提供程序将所有差异发送回GET_MANY和GET_REFERENCE_MANY过滤器值的差异内容,但这只是解析过滤器arg以匹配sequelize预期的问题。我最终将最终编写一个dataProvider,但这暂时符合要求。

PS ..我在我的CheckboxGroupInput中看到一些奇怪的行为,当我单击某些东西时,它复制了所单击的任何框...其原因是我的模式中的对象类型错误...有一个 Int ID 混合在一起,幸运的是,它出现在Redux Dev Tools中并导致了我的问题。

最后..我在Github中整理了一个示例项目,该项目将使用React-Admin,GraphQL,RA_DATA_GRAPHQL_SIMPLE,Sequelize和Postgres数据库,我将对此进行很多评论,以消除对任何人的混淆像我自己...干杯!