react-admin を既存の react-redux プロジェクトに組み込むために、 https://marmelab.com/react-admin/CustomApp.htmlのガイドに従っていました。
admin、i18n、およびルーターの状態オブジェクトを一般的な List コンポーネントに挿入しました。ただし、コンポーネントをレンダリングすると、次のエラーが発生します。
TypeError: resourceState is undefined
mapStateToProps
node_modules/ra-core/lib/controller/ListController.js:413
410 |
411 | return {
412 | query: getQuery(props),
> 413 | params: resourceState.list.params,
414 | ids: resourceState.list.ids,
415 | selectedIds: resourceState.list.selectedIds,
416 | total: resourceState.list.total,
重要な注意点はconsole.log
、コンポーネントの props を実行すると、管理オブジェクトが実際に存在するにもかかわらず、「リソース」オブジェクトが含まれていないことがわかります。リソースをストアの管理画面に手動で読み込むにはどうすればよいですか?
コンポーネントのスマート コンテナ:
class MyContainer extends Component {
render() {
return(
<Switch>
<Route exact path='/admin/stuff/list' hasCreate render=
{() => <MyList resource='myStuff' {...this.props}/>}/>
</Switch>
)
}
}
const mapStateToProps = (state) =>{
return {
admin: state.admin,
i18n: state.i18n,
form: state.form
}
}
最後に、MyList コンポーネント:
import React, { Component } from 'react'
import { List, Datagrid } from 'react-admin'
class MyList extends Component {
constructor(props) {
super(props)
}
render() {
return(
<List {...this.props}>
<Datagrid>
</Datagrid>
</List>
)
}
}
export default MyList