我想以这种方式生成我的路线:
错误消息:“对象无效作为React子对象(找到:具有键{contents}的对象)”。
class App extends Component {
menu(){
return {
menu:[
{id:1, text:"Dashboard", component: <Dashboard/>},
{id:2, text:"Users", component: <Users/>},
]
}
}
render() {
return (
<HashRouter>
<Router data={this.menu()}/>
</HashRouter>
);
}
};
class Router extends Component {
render() {
let menu = this.props.data.menu,
contents = menu.map((elem, i) =>{
return <Route exact
path={"/" +elem.text.toLowerCase()}
component={elem.component}/> //How to call the component here ?
}, this);
console.log(contents);
return(
{contents} //Error
//<Route exact path={"/" +elem.text.toLowerCase()} render={Dashboard}/> // Works
)
}
};
答案 0 :(得分:0)
我使用codesanbox.io
https://codesandbox.io/s/6l9r1qwkzk
似乎props.menu.data
没有收到component
财产。
const Router = ({ data }) => JSON.stringify(data);
和输出如下:
{"menu":[{"id":1,"text":"Dashboard"},{"id":2,"text":"Users"}]}
注意
您无法在json数据中实例化组件,如下所示:
{ id: 2, text: "Users", component: <Users /> }
错误是Converting circular structure to JSON
奇怪的是codesandbox.io
没有将组件调试为函数,因此我在本地计算机上重新构建了它
React adopt
撰写渲染道具组件链接专业人员
我希望我有用! :)