#javascript #reactjs
#javascript #reactjs
Вопрос:
У меня есть следующий компонент:
import React from 'react';
import porgectsCollection from './../data/projectInfo.js';
class SingleProject extends React.Component {
getProjectId() {
let projectID = porgectsCollection.filter(el => {
return (el.title = {this.props.params.id});
});
}
render () {
console.log(this.getProjectId);
return (
<div>
<h2>{this.props.params.id}</h2>
</div>
);
}
}
export default SingleProject;
и мои routes.jsx следующим образом:
import React from 'react';
import { Route, Router, IndexRoute } from 'react-router';
import ReactDOM from 'react-dom';
import Wrapper from './../wrapper.jsx';
import Home from './../home.jsx';
import Projects from './../projects.jsx';
import SingleProject from './../singleProject.jsx';
ReactDOM.render((
<Router>
<Route component={Wrapper} >
<Route path="/" component={Home} />
<Route path="projects" component={Projects} />
<Route path="projects/:id" component={SingleProject} />
</Route>
</Router>
), document.getElementById('app'));
На основе идентификатора, переданного в:
<Route path="projects/:id" component={SingleProject} />
Я хочу получить это значение и отфильтровать массив, поступающий из:
import porgectsCollection from './../data/projectInfo.js';
Затем я пытаюсь использовать эту функцию:
getProjectId() {
let projectID = porgectsCollection.filter(el => {
return (el.title = {this.props.params.id});
});
}
для отображения правильных данных.
Я не уверен, что это правильный подход, однако я также получаю сообщение об ошибке при запуске webpack:
неожиданный токен, ссылающийся на {this.props.params.id }
Комментарии:
1. {this.props.params.id } фигурные скобки не требуются, фигурные скобки используются только тогда, когда вы хотите исправить javascript внутри jsx, как вы сделали в <h2>{this.props.params.id }</h2>
Ответ №1:
Вам не нужны скобки — это просто обычная функция JS:
getProjectId() {
let projectID = porgectsCollection.filter(el => {
return el.title === this.props.params.id;
});
}
Немного более яркое форматирование:
getProjectId() {
return porgectsCollection.filter(el => el.title === this.props.params.id);
}
(также вы допустили опечатку в «проектах», но я оставил ее последовательной)