React Admin,基于第一个值的第二个输入过滤器
React Admin, second input filter based on first value
这是我第一次来,所以我希望我能清楚!
我正在为一个项目使用 React-admin,我遇到了一个奇怪的问题。我正在使用模态,其中有两个字段,一个是 select 仓库(对于我的项目),第二个是基于仓库 selected 解析位置。问题是,当我 select 一个位置时,一旦选择了仓库,就会调用第二个查询而不使用过滤器(但是在选择仓库之后就有很好的查询)。
示例:我选择“WHBOB”,查询正在过滤 WHBOB,当我点击该位置时,第二个查询在没有过滤的情况下通过。我想,我正在使用的状态是重置过滤器,但我不知道如何修复它...
代码:
import React, { useState } from 'react'
import { AutocompleteInput, ReferenceInput, SelectInput } from 'react-admin'
import { Box, Typography } from '@material-ui/core'
import { makeStyles } from '@material-ui/core/styles'
import ProductReceptionInputs from 'components/ProductReceptionInputs'
const useSmallBodyStyles = makeStyles(theme => ({
root: {
fontWeight: '600',
color: theme.palette.secondary.contrastText
}
})
)
const ProductLogisticInputs = (props) => {
const classes = useSmallBodyStyles()
const [selectedOption, setSelectedOption] = useState()
function handleChange (evt) {
setSelectedOption(evt.target.value)
}
return (
<>
<Typography variant='body2' color='secondary.contrastText' className={classes.root}>Atelier</Typography>
<Box display='flex' width='100%'>
<Box width='320px'>
<SelectInput
label='Atelier' source='warehouse'
choices={[
{ id: 'WHBOB', name: 'Bobigny' },
{ id: 'WHLIL', name: 'Lille' },
{ id: 'WHLYO', name: 'Lyon' }
]} alwaysOn emptyText='Atelier' fullWidth
InputProps={{ disableUnderline: true }}
onChange={handleChange}
/>
</Box>
<Box width='320px' marginLeft='24px'>
<ReferenceInput
label='Emplacement'
reference='location'
source='location'
filter={{ ancestor_path: selectedOption }}
alwaysOn
>
<AutocompleteInput
optionValue='id'
optionText='name'
options={{ disabled: !selectedOption }}
fullWidth
/>
</ReferenceInput>
</Box>
</Box>
<Typography variant='body2' color='secondary.contrastText' className={classes.root}>Reception</Typography>
<ProductReceptionInputs />
</>
)
}
export default ProductLogisticInputs
如果您需要更多信息,请随时询问!
希望我说清楚了:)
对于这种情况(链接 2 个选项),您应该使用 FormDataConsumer
。这是文档:https://marmelab.com/react-admin/Inputs.html#linking-two-inputs
这是我第一次来,所以我希望我能清楚!
我正在为一个项目使用 React-admin,我遇到了一个奇怪的问题。我正在使用模态,其中有两个字段,一个是 select 仓库(对于我的项目),第二个是基于仓库 selected 解析位置。问题是,当我 select 一个位置时,一旦选择了仓库,就会调用第二个查询而不使用过滤器(但是在选择仓库之后就有很好的查询)。
示例:我选择“WHBOB”,查询正在过滤 WHBOB,当我点击该位置时,第二个查询在没有过滤的情况下通过。我想,我正在使用的状态是重置过滤器,但我不知道如何修复它...
代码:
import React, { useState } from 'react'
import { AutocompleteInput, ReferenceInput, SelectInput } from 'react-admin'
import { Box, Typography } from '@material-ui/core'
import { makeStyles } from '@material-ui/core/styles'
import ProductReceptionInputs from 'components/ProductReceptionInputs'
const useSmallBodyStyles = makeStyles(theme => ({
root: {
fontWeight: '600',
color: theme.palette.secondary.contrastText
}
})
)
const ProductLogisticInputs = (props) => {
const classes = useSmallBodyStyles()
const [selectedOption, setSelectedOption] = useState()
function handleChange (evt) {
setSelectedOption(evt.target.value)
}
return (
<>
<Typography variant='body2' color='secondary.contrastText' className={classes.root}>Atelier</Typography>
<Box display='flex' width='100%'>
<Box width='320px'>
<SelectInput
label='Atelier' source='warehouse'
choices={[
{ id: 'WHBOB', name: 'Bobigny' },
{ id: 'WHLIL', name: 'Lille' },
{ id: 'WHLYO', name: 'Lyon' }
]} alwaysOn emptyText='Atelier' fullWidth
InputProps={{ disableUnderline: true }}
onChange={handleChange}
/>
</Box>
<Box width='320px' marginLeft='24px'>
<ReferenceInput
label='Emplacement'
reference='location'
source='location'
filter={{ ancestor_path: selectedOption }}
alwaysOn
>
<AutocompleteInput
optionValue='id'
optionText='name'
options={{ disabled: !selectedOption }}
fullWidth
/>
</ReferenceInput>
</Box>
</Box>
<Typography variant='body2' color='secondary.contrastText' className={classes.root}>Reception</Typography>
<ProductReceptionInputs />
</>
)
}
export default ProductLogisticInputs
如果您需要更多信息,请随时询问!
希望我说清楚了:)
对于这种情况(链接 2 个选项),您应该使用 FormDataConsumer
。这是文档:https://marmelab.com/react-admin/Inputs.html#linking-two-inputs