gpt4 book ai didi

javascript - React 组件未使用 React Router 渲染

转载 作者:行者123 更新时间:2023-12-01 03:17:50 26 4
gpt4 key购买 nike

我遇到了一些问题,组件在遵循其路线后无法呈现。这些路由是在父组件 Drawings 中创建的,并向 Drawings 组件发送几个 props。

当我单击链接时,我会到达正确的路径,例如 /drawing/20170724,并且运行 render 函数中的日志语句。我也得到了 Prop ,到目前为止一切顺利。但是,返回并没有发生,因此我需要的 HTML 不可用。

这是创建路线和链接的绘图:

import React, { Component } from "react";
import { Route, Link } from "react-router-dom";
import AnimatedWrapper from "../modules/AnimatedWrapper";

import Drawing from '../components/Drawing';

class DrawingsComponent extends Component {
render() {
const drawings = this.props.drawings;
const drawingsMap = this.props.drawingsMap;

return(
<div>
<div className="page">
<div className="drawings-list">
{
drawings.map((drawing) => {
return(
<Link to={`/drawing/${drawing.date}`} key={drawing.date}>
<div className="drawing-thumb">
<h2>{drawing.date}</h2>
</div>
</Link>
)
})
}
</div>
{
Object.keys(drawingsMap).map((d, i) => {
return <Route path={`/drawing/${drawings[i].date}`} render={(props) => (<Drawing drawingPkg={drawingsMap[d]} drawingInfo={drawings[i]} {...props} />)} key={`${drawings[i].date}`}/>
})}
</div>
</div>
)
}
}

const Drawings = AnimatedWrapper(DrawingsComponent);
export default Drawings;

这是绘图:

import React, { Component } from 'react';
import AnimatedWrapper from "../modules/AnimatedWrapper";

class DrawingComponent extends Component {
render() {
const drawing = this.props.drawingPkg;
const drawingInfo = this.props.drawingInfo;

console.log('gonna draw now');

return(
<div className="drawing">
<h2 className="drawing-title">{drawingInfo.title}</h2>
<canvas></canvas>
</div>
)
}
}

const Drawing = AnimatedWrapper(DrawingComponent);
export default Drawing;

我不明白为什么绘图组件没有返回。

最佳答案

你所做的事情是错误的。单击链接后,您可以更改 URL。然后你必须提供路由配置,告诉 React Router 当 URL 改变时要渲染哪个组件。在您的 index.js 文件中应该是这样的。

import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { createStore, applyMiddleware } from 'redux';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import promise from 'redux-promise';

import reducers from './reducers';
import Drawing './components/drawing_component';


const createStoreWithMiddleware = applyMiddleware(promise)(createStore);

ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<div>
<Switch>
<Route path="/drawings/:date" component={Drawing} />
<Route path="/" component={IndexComponent} />
</Switch>
</div>
</BrowserRouter>
</Provider>
, document.querySelector('.container'));

我认为这里的问题是你的路由配置。我从来没有见过像你这样给出路由配置。

然后编写一个单独的 Drawing 组件来呈现给定的 drawing 实例。

进行此更改后,您的链接应如下所示。

<Link to={`/drawing/${drawing.date}`}>
{drawing.date}
</Link>

底线是这样的。这里您提供一些带有超链接的文本。单击此路由器后,将更改 URL,就像您现在的情况一样。然后它使用路由器配置来渲染相关组件。

关于javascript - React 组件未使用 React Router 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45427264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com