输入不在 SimpleForm 内重新呈现

Posted

技术标签:

【中文标题】输入不在 SimpleForm 内重新呈现【英文标题】:Input not rerendering inside SimpleForm 【发布时间】:2018-03-11 09:28:00 【问题描述】:

我在站点设置面板中使用 AOR 1.2.2。 棘手的部分是这些设置可以有不同的类型:字符串、整数、布尔值、字符串数组、整数等 我设法通过从商店连接记录并使用以下代码来做到这一点:

const SettingsEdit = (props) => 
  return (
    <Edit actions=<SettingsEditActions ...props /> title=
      <SettingsTitle /> ...props>
      <SimpleForm toolbar=<EditToolbar />>
        <TextField source="description" />
        <DisabledInput elStyle= width: '100%'  label="Default 
         value" source="defaultValue" />
        renderCountryValue(props)
      </SimpleForm>
    </Edit>
  );
;




const renderCountryValue = (prop) => 
  const record = prop.record;
  if (record) 
    if (record.multilang) 
      // countryValue will be a dict with locale keys
      // TODO Multilang fields temporary disabled in restClient
      return null;
    
    // countryValue will be single value or array
    if (record.schema.type === 'array') 
      // countryValue will be single array
      if (record.schema.items.type === 'string') 
        return <LongTextInput format=v => v.join() parse=v => v.split(',') label="Value" source="countryValue" />;
      
      if (record.schema.items.type === 'integer') 
        return <LongTextInput format=v => v.join() parse=v => v.split(',') validate=validateIntegerArray label="Value" source="countryValue" />;
      
    
    // countryValue will be single value
    if (record.schema.type === 'string') 
      return <TextInput label="Value" source="countryValue" />;
    
    if (record.schema.type === 'integer') 
      return <NumberInput label="Value" source="countryValue" />;
    
    if (record.schema.type === 'boolean') 
      return <BooleanInput label="Value" source="countryValue" />;
    

    return <LongTextInput label="Value" source="countryValue" />;
  
  return <TextInput label="Value" source="countryValue" />;
;

在我尝试将 AOR 更新到 1.3.1 之前它运行良好,然后它停止了。 我注意到的是,在第一次渲染中没有记录,因此它呈现默认的 TextInput 但在第二次渲染时,当有记录时,它不会将此输入重新渲染为正确的类型,如 NumberInput 等。 我试图调试它,程序在它应该呈现其他输入但屏幕上没有任何反应时出现。 有什么想法或解决方法吗?

【问题讨论】:

【参考方案1】:

在依赖道具记录时,我自己也遇到了一些问题。然后我通常会设置手动检查该值并在 props 中找不到记录时返回 null。

【讨论】:

以上是关于输入不在 SimpleForm 内重新呈现的主要内容,如果未能解决你的问题,请参考以下文章

组件不在地图内呈现

Angular Universal 不在路由器插座内呈现内容

尝试呈现其视图不在窗口层次结构中的 UIAlertController (Swift 3/Xcode 8)

ListView 不在 ScrollView 和 StackLayout 内呈现,在 ios 中具有水平方向 - nativescript-vue

SAP UI5 SimpleForm M 和 L 型表单的 label 和 input 分配讲解

更改特定索引而不在 Vuejs 中重新渲染整个数组