私は自分のプロジェクトでreact-router v4.2.2を使用しています。それぞれの他のコンポーネントへのリンク。今は、各カードを「Project1」という特定のコンポーネントにルーティングすることで、ルータの動作をテストしています。しかし、これは機能していません。私はProject1コンポーネントのポップアップ内のdivを見ていないよ。私は何を間違えているのですか?それぞれのカードがProject1コンポーネントにリンクするべきではありませんか?ここReact-Router v4.2.2が動作しない(私はRouteタグで何か間違ったことをしたと思います)
は、カードを保持する主容器用のコードである:ここ
import React from 'react';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import ProjectCard from '../components/project_card.js';
import Project1 from '../components/project1.js';
class ProjectCards extends React.Component {
render() {
var projectCards = this.props.projects.map((project, i) => {
return (
<div key={i}>
<Link to={`/${project.title}`}>
<ProjectCard title={project.title} date={project.date} focus={project.focus}/>
</Link>
</div>
);
});
return (
<div>{projectCards}</div>
);
}
}
function mapStateToProps(state) {
return {
projects: state.projects
};
}
export default connect(mapStateToProps)(ProjectCards);
は、ルートコンテナのコードである:ここ
import React from 'react';
import Project1 from '../components/project1.js';
import { connect } from 'react-redux';
import { Route, Switch } from 'react-router-dom';
class Routes extends React.Component{
render() {
var createRoutes = this.props.projects.map((project, i) => {
return <Route key={i} exact path={`/${project.title}`} component={Project1}/>
});
return (
<Switch>
{createRoutes}
</Switch>
);
}
}
function mapStateToProps(state) {
return {
projects: state.projects
};
}
export default connect(mapStateToProps)(Routes);
はindex.jsためのコードです。
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import { applyMiddleware, createStore } from 'redux';
import ReduxPromise from 'redux-promise';
import { BrowserRouter } from 'react-router-dom';
import App from './components/App.jsx';
import css from '../style/style.css';
import style from '../style/style.css';
import reducers from './reducers';
const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore);
ReactDOM.render(
<Provider store={createStoreWithMiddleware(reducers)}>
<BrowserRouter>
<App />
</BrowserRouter>
</Provider>
, document.getElementById('root'));
と、カードがクリックされたときに表示されるProject1のコード:
import React from 'react';
const Project1 =() => {
return (
<div>hello there this is Project1</div>
);
}
export default Project1;
私はルートを配置した別のコンポーネントを追加し、最初はコンポーネントをprojectCardsコンポーネント内に配置しましたが、動作しませんでした。それから、私はApp.jsにコンポーネントを置いたが、まだ動作していない。質問を編集してコードに加えられた変更を更新し、新しいコンポーネントをそこに配置します。私は今何が間違っていますか? – user74843
ああ、わかった!私はroute-containerのbottomにあるreact-routerからwithRouter関数を使用していませんでした。そこにはconnect関数があります。今それは働いている。あなたの助けをありがとう:D – user74843