2017-07-20 15 views
1

Listコンポーネントが使用するFilterコンポーネントを利用できるカスタムShowコンポーネントを作成したいとします。私は正直なところ、どこから始めるべきか分かりません。誰かが私を正しい方向に向けることができますか?Admin-on-Restフィルタを追加するカスタムShowコンポーネントを作成する方法

は、これはそれがListで使用される方法です。

export const LogList = (props) => (
    <List {...props} perPage={100} title="Logs and Reports" filters={< FileFilter/>}> 

私はそうのようShowでそれを使用できるようにしたいと思います:

export const archivedShow = ({ ...props }) => (
     <Show title="Log" {...props} filters={<LogFilter/>} > 

答えて

0

カスタム接続コンポーネントを書くことができます。その後、あなたは望むようにすることができます。

showコンポーネントには他のcompと同様にアクションを提供できます。 https://marmelab.com/admin-on-rest/Show.html#actions

は、あなたがあなたのコンポーネントは、その後、Reduxの状態に接続することができます

(おそらくカスタム減速を使用して)あなたの状態でフィールドを埋めるために、このアクションを使用することができます。

class connectedReferenceInput extends Component { 
    render() { 
    <ReferenceInput source={this.props.source} > 
     <somecomp> 
    </ReferenceInput> 
    } 
} 

function mapStateToProps(state, props) { 
    return { 
    source: state.admin.somefield.source 
    }; 
} 

export default connect(mapStateToProps, { 
    crudGetList: crudGetListAction 
})(ClientInput) 

ドキュメントはAORのドキュメントで減速を書き込むためもあり、以下のような

何か。

詳細: 1)somecompあなたはreferenceInput 2)somefieldの子として必要なすべてのコンポーネントでは、あなたが接続されているフィルタ部品とconnectedReferenceInputの間でデータを渡すために設定する任意のフィールドです。

あなたが本質的に行っていることの分裂。

1)フィルタの子を作成する接続コンポーネントを作成します。この接続されたコンポーネントは、あなたの状態の一部を「減速機」によって変更するredux「アクション」を撮影します。

アクションとレデューサーの両方を作成するためのドキュメントは、ドキュメントにあります。

2)connectedReferenceInputを作成します(上のように)。これは、connectedFilterCompが行う状態の変更を(mapStateToPropsを通じて)受け取ります。これを使用して、referenceInputの可変フィルタを作成し、変数データを表示することができます。

基本的にはreduxを使用して、フィルタとコンポーネント間でデータを渡します。

+0

申し訳ありません、この場合、フィルターには、 ''さんとなりましたか?また、source: 'state.admin.somefield.source'に' somefield'とは何ですか?私はちょっと混乱しています。 @kunal pareek – Stebermon

+0

somefieldはちょうどそれです:任意のフィールドは、あなたの状態で減速機とアクションで設定します。 somecompはあなたが選択/必要とするreferenceInputの子になります AORはreduxを使用して状態を管理していますので、あなたはそれを調べると良いでしょう。つまり、Reduxはステートストレージです。ステートを別のコンポーネントを介して小道具として渡すのではなく、すべてのステート情報をそこに格納することができます。 mapStateToPropsは状態の小さなスライスを取って、接続されたコンポーネントが受け取る小道具に変換します。 –

+0

よりわかりやすくするための上記の回答の編集 –

関連する問題