【问题标题】:Access the values of components in react-admin在 react-admin 中访问组件的值
【发布时间】:2018-07-16 06:31:18
【问题描述】:

我想访问组件的值。因为我会用它来访问其他数据。例如;

<ArrayInput source='services'>
    <SimpleFormIterator>
        <ReferenceInput label="Service Type"
            source="serviceType"
            reference="servicetypes"
            validate={required()}>
            <SelectInput optionText={GAMMA_CONSTANTS.SOURCE_ID} />
        </ReferenceInput>
        {(this.state.serviceTypes && this.state.serviceTypes.length > 0) ?
            this.state.serviceTypes.filter(serviceType => {
                    return serviceType.id === (**source="serviceType"**)
                })[0]["datapointtype"].map((feature, index) => {
                return <TextInput source={index} label="deneme" />
            })
            : null}

    </SimpleFormIterator>
</ArrayInput>

我想在过滤器方法中访问它。有没有办法做到这一点?

【问题讨论】:

  • 你使用的是 admin-on-rest 还是 react-admin ?
  • 我正在使用 react-admin

标签: reactjs admin-on-rest react-admin


【解决方案1】:

你可以这样使用:

import { FormDataConsumer } from 'react-admin';

const PostEdit = (props) => (
    <Edit {...props}>
        <SimpleForm>
            <BooleanInput source="hasEmail" />
            <FormDataConsumer>
                {({ formData, ...rest }) => formData.hasEmail &&
                     <TextInput source="email" {...rest} />
                }
            </FormDataConsumer>
        </SimpleForm>
    </Edit>
); 

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

您不仅限于隐藏/显示事物。在您的情况下,您应该能够避免使用状态并直接访问formData.serviceTypes

【讨论】:

  • 是的,您的解决方案适用于单个组件。但是我没有提到我的案例中的关键点,很抱歉。我对帖子中的代码部分做了一些改动。有一个 ArrayInput,我想一一绑定这个 ArrayInput 的值。比如在services数组中,0.“ReferenceInput”的值需要绑定0.loop,1.“ReferenceInput”的值需要绑定到1.loop等等。这种情况也有解决方案吗?
  • 我设置了一个代码沙盒,并在 CommentCreate 页面中添加了一个“服务”ArrayInput。基本上我想发送我在“serviceName”文本框中输入的文本。如果可以,我将在函数中返回与此服务名称相关的选择列表(用于 SelectArrayInput)。我不知道你是否清楚或者我可以清楚地告诉我我想要什么link
  • 在 CommentCreate 中,我添加了一个 ArrayInput 元素,这会导致页面损坏。我不知道为什么,因为我在我的本地代码中这样使用它并且没有错误
  • 我发现了创建页面打不开的问题。我猜有一个关于 RefenceInput 的错误。现在页面正常了。是否清楚我想要的代码? codesandbox.io/s/92w2rxj54o
  • 不,抱歉,我不明白
猜你喜欢
  • 2021-12-29
  • 2020-08-16
  • 2017-11-12
  • 2020-05-20
  • 1970-01-01
  • 2019-08-03
  • 2021-03-18
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多