Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 是否可以在REST上的Admin中的List/DataGrid中有条件列?_Reactjs_Datagrid_Admin On Rest - Fatal编程技术网

Reactjs 是否可以在REST上的Admin中的List/DataGrid中有条件列?

Reactjs 是否可以在REST上的Admin中的List/DataGrid中有条件列?,reactjs,datagrid,admin-on-rest,Reactjs,Datagrid,Admin On Rest,如果我在REST上的Admin中的列表组件中应用过滤器,我只想在选择此特定过滤器后显示过滤列(TextField),因为过滤器是模糊的,我希望一眼就能看到不同的结果。但如果未设置过滤器,则应隐藏该列 到目前为止,我是这样实现的 const ConditionalFilterTextField = (props) => { const show = ... // if filter is set in URL return (show) ? <TextField {..

如果我在REST上的Admin中的
列表
组件中应用过滤器,我只想在选择此特定过滤器后显示过滤列(
TextField
),因为过滤器是模糊的,我希望一眼就能看到不同的结果。但如果未设置过滤器,则应隐藏该列

到目前为止,我是这样实现的

const ConditionalFilterTextField = (props) => {
    const show = ... // if filter is set in URL
    return (show) ? <TextField {...props} /> : null
}
。。。 在App.js中


constmylist=(道具)=>{
const show=…//如果在URL中设置了筛选器
返回(
...
{show?:null}
...
);
}

感谢您的及时回复!我也尝试过这个,但是除非从初始页面加载开始,
show
true
,否则它不会显示列,即使
show
最终变成
true
。你能发布列表组件的完整代码吗?那么,如果我实现自己的列表组件,会有什么不同吗,正如你建议的那样?不,我不是这个意思,
MyList
这里只是你的
ItemList
的名字。为了回答这个问题,我得调查一下好的,谢谢你的努力!
<List {...props} filters={<MyFilter />}>
  <Datagrid>
    ...
    <ConditionalFilterTextField sortable={false} source="filter_field" label="My Label" />
    ...
  </Datagrid>
</List>
class ItemList extends Component {
  render() {
    const props = this.props
    // Find out if current filter is source of field.
    const filter = props.itemsFilters
    const showFieldA = (filter && filter.fieldA) ? true : false

    return <List {...props} filters={<ItemsFilter />} perPage={50}>
      <Datagrid>
        <ReferenceField sortable={false} source="id" reference="items" linkType="show">
          <TextField source="fieldB" />
        </ReferenceField>
        <TextField sortable={false} source="fieldC" />
        <TextField sortable={false} source="fieldD" />
        <DateField sortable={false} source="fieldE" />
        { (showFieldA === true) ? <TextField sortable={false} source="fieldA" /> : null }
        <ShowButton />
        <EditButton />
      </Datagrid>
    </List>
  }
}

const ItemsFilter = (props) => (
  <Filter {...props}>
    <TextInput label="FilterSearch" source="q" />
    <TextInput label="FilterA" source="fieldA" />
  </Filter>
)

function mapStateToProps(state) {
  return {
    itemsFilters: state.admin.resources.items.list.params.filter
  }
}

export default connect(mapStateToProps)(ItemList)
<Resource name="items" list={ItemList} show={ItemShow} edit={ItemEdit} />
const MyList = (props) => {
    const show = ... // if filter is set in URL

    return (
        <List {...props} filters={<MyFilter />}>
            <Datagrid>
                ...
                {show ? <TextField {...props} /> : null}
                ...
            </Datagrid>
        </List>
    );
}