0
저는이 문제에 대해 이미 반나절을 보냈으며 잘못된 것을 찾을 수 없습니다. 나는 서버에서 반응 라우터를 사용한다. 그러나 모든 경로에 대해 동일한 구성 요소 (루트 경로의 구성 요소)를 렌더링합니다.서버의 React-router는 항상 루트 경로를 렌더링합니다.
//routes
import routes from "../shared/routes";
app.get('*', (request, response) => {
match({ routes: routes, location: request.url }, (err, redirect, props) => {
if (err) {
response.status(500).send(err.message)
} else if (redirect) {
response.status(302).redirect(redirect.pathname + redirect.search)
} else if (props) {
console.log('Rendering '+JSON.stringify(props));
const appHtml = ReactDOMServer.renderToString(<RouterContext {...props}/>);
response.render('app', {app: appHtml});
} else {
response.status(404).send('Not Found')
}
});
});
여기
내 경로 :
export default (
<Route component={AppHandler} path="/">
<IndexRoute component={AppHandler}/>
<Route component={AboutHandler} path="about" />
</Route>
);
다른 관찰 :
- 제대로 예를 들어, 존재하지 않는 경로를 구분
여기 내 서버입니다. 내가 브라우저에서 /blahblah를 입력 할 때 내가 루트 경로에 대한 구성 요소로 AboutHandler을 넣었을 때 나는
- (404)을 가지고, 그것은 correctyl가 "/"를
- 가 나는 또한 시도 표시됩니다 을 "에 대한"대신 만의 루트 경로로 여기
- 내가 소품
{"routes":[{"path":"/","indexRoute":{},"childRoutes":[{"path":"about"}]},{"path":"about"}],"params":{},"location":{"pathname":"/about","search":"","hash":"","action":"POP","key":"bqces8","query":{}},"components":[null,null],"router":{"location":{"pathname":"/about","search":"","hash":"","action":"POP","key":"bqces8","query":{}},"params":{},"routes":[{"path":"/","indexRoute":{},"childRoutes":[{"path":"about"}]},{"path":"about"}]},"matchContext":{"transitionManager":{},"router":{"location":{"pathname":"/about","search":"","hash":"","action":"POP","key":"bqces8","query":{}},"params":{},"routes":[{"path":"/","indexRoute":{},"childRoutes":[{"path":"about"}]},{"path":"about"}]}}}
에서 무엇을 얻을
UPDATE :
AppHandler 및 AboutHandler이 웹팩를 사용하여 구축된다. 두 파일의
import AppHandler from '../../build/app';
import AboutHandler from '../../build/about';
다음
입니다 관련 부분 :
app.js :
var App = function (_Component) {
_inherits(App, _Component);
function App() {
_classCallCheck(this, App);
return _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).apply(this, arguments));
}
_createClass(App, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
'App root'
);
}
}]);
return App;
}(_react.Component);
exports.default = App;
그리고 about.js :
var About = function (_Component) {
_inherits(About, _Component);
function About() {
_classCallCheck(this, About);
return _possibleConstructorReturn(this, (About.__proto__ || Object.getPrototypeOf(About)).apply(this, arguments));
}
_createClass(About, [{
key: 'render',
value: function render() {
return _react2.default.createElement(
'div',
null,
'About'
);
}
}]);
return About;
}(_react.Component);
exports.default = About;
appHandler 구성 요소 코드 –
@ShubhamKhatri : 의견을 보내 주셔서 감사합니다. 요청한 파일의 관련 부분을 추가했습니다. – ElMent