我找不到隐藏输入的方法取决于一些记录值.我试图import { formValueSelector } from 'redux-form'获得当前状态,但我失败了.
export default props =>
<Edit {...props}>
<SimpleForm>
<DisabledInput source="id"/>
<NumberInput options={opts} source="age" />
{
props.record.age > 18 &&
<TextInput options={opts} source="question"/>
}
</SimpleForm>
</Edit>
Run Code Online (Sandbox Code Playgroud)
Wéd*_*uri 12
您可以使用marmelab/aor-dependent-input,它是根据其他输入值显示输入的组件.
用法示例:
import React from 'react';
import {
Create, SimpleForm, TextInput, DisabledInput, NumberInput
} from 'admin-on-rest';
import DependentInput from 'aor-dependent-input';
const checkAge = (age) => {
return parseInt(age, 10) > 18;
};
const UserCreate = (props) => (
<Create {...props}>
<SimpleForm>
<DisabledInput source="id"/>
<NumberInput source="age" step="1" />
<DependentInput dependsOn="age" resolve={checkAge}>
<TextInput source="question"/>
</DependentInput>
</SimpleForm>
</Create>
);
export default UserCreate;
Run Code Online (Sandbox Code Playgroud)
在record您提交之前不会更改,因此您的解决方案不起作用.我相信解决方案是使用redux-form文档中的formValueSelector解释,在自定义连接的输入组件中使用.
就像是:
// in src/ConditionalInput.js
import React from 'react';
import { connect } from 'react-redux';
import { formValueSelector } from 'redux-form'
import { TextInput } from 'admin-on-rest/lib/mui`;
const ConditionalInput = ({ isDisplayed, condition, children, ...rest }) =>
isDisplayed
? React.cloneElement(children, rest)
: null;
function mapStateToProps(state, props) {
return {
isDisplayed: props.condition(formValueSelector('record-form')),
}
}
export default connect(mapStateToProps)(ConditionalInput);
// in your EditView
export default props =>
<Edit {...props}>
<SimpleForm>
<DisabledInput source="id"/>
<NumberInput options={opts} source="age" />
<ConditionalInput condition={selector => selector('age') > 18}>
<TextInput options={opts} source="question"/>
</ConditionalInput>
</SimpleForm>
</Edit>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3097 次 |
| 最近记录: |