代码之家  ›  专栏  ›  技术社区  ›  elsni

如何根据react admin中布尔输入字段的状态动态显示或隐藏表单字段?

  •  0
  • elsni  · 技术社区  · 5 年前

    我需要建立一个复杂的编辑形式与反应管理。表单中有各种各样的yes/no滑块,这些滑块由react admin的BooleanInput组件生成。 如果用户将slider设置为“yes”,则应动态显示更多表单字段,这些字段按主题指向slider。如何查询BooleanInput组件的状态,或者是否以不同的方式在react中解决此任务?

    <BooleanInput source="yesno" label="show or hide fields" />
    <AutocompleteArrayInput source="probably_hidden1" label="show or hide me" choices={[
            { id: 'one', name: '1' },
            { id: 'two', name: '2' },
            { id: 'three', name: '3' }
    ]} />
    <TextInput multiline source="text" label="show or hide me too" />
    
    0 回复  |  直到 5 年前
        1
  •  3
  •   elsni    5 年前

    我发现:可以使用FormDataConsumer这样做:

    <BooleanInput source="yesno" label="show or hide fields" />
    <FormDataConsumer>
        {({ formData, ...rest }) => formData.yesno && <div>
            <AutocompleteArrayInput source="yesno" label="show or hide fields" choices={[
                { id: 'one', name: '1' },
                { id: 'two', name: '2' },
                { id: 'three', name: '3' }
            ]} {...rest} />
            <TextInput multiline source="text" label=""show or hide me too" {...rest} />
        </div>
        }
    </FormDataConsumer>
    

    https://marmelab.com/react-admin/Inputs.html#hiding-inputs-based-on-other-inputs

        2
  •  1
  •   Omer Cohen    5 年前

    您可以在JSX中动态地编写代码

    > { isShow ? <TextInput ... /> : null }