简体   繁体   English

React Router Lodash助手功能

[英]React Router Lodash helper function

I'm using react-router to route to /products/:id the id of a local data file, I'm using lodash helper to mach the URL params with the id of the data file, I get an error (TypeError: Cannot read property 'description' of undefined) when I navigate to "/products/124", I think the problem is in the lodash find helper function 我正在使用react-router将本地数据文件的ID路由到/ products /:id,我正在使用lodash助手来将URL参数与数据文件的ID进行匹配,但出现错误(TypeError:Cannot当我导航到“ / products / 124”时,读取未定义的属性“ description”,我认为问题出在lodash的find helper函数中

EachProject.js EachProject.js

import React, { Component } from 'react';
import find from 'lodash/find';
import { Link } from 'react-router-dom';
import './EachProject.css';
import PRODUCTS from '../../Data/CarouselData.js';

class EachProject extends Component {
  render() {
const product = find(PRODUCTS, ['id', 
parseInt(this.props.match.params.id)]);
const currentProduct = product;
return (
  <div>
    <h3 id="product-name">{currentProduct.description}</h3>
  </div>
    );
  }
}

export default EachProject; 

CarouselData.js CarouselData.js

const products = [
  {
    id: "124",
    description:"garden and terrace duplexes and Gourmet Bazaar opened on the shore. Art Street, Performance Square.",
    types: "2+1, 3+1",
    area:"91m - 171m",
    priceMin:"330,000 TL",
    priceMax:"535,000 TL",
    location: "Esenyurt, Istanbul",
    status: "Under Construction",
    installment: "36",
    deliveryDate: "2018",
    deliveryDateAr: "2018",
    downPayment: "30",


  }

]



export default products;

index.js index.js

import React from 'react';
import ReactDOM from 'react-dom';

import './index.css';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import App from './App';

import Services from './components/Routes/Services/Services.js';
import About from './components/Routes/About/About.js';
import Contact from './components/Routes/Contact/Contact.js';
import Projects from './components/Routes/Projects/Projects.js';
import registerServiceWorker from './registerServiceWorker';
import EachProject from './components/Routes/EachProject/EachProject.js';



ReactDOM.render(
  <BrowserRouter>
    <Switch>
      <Route exact path="/products/:id" component={EachProject} />
      <Route path="/projects" component={Projects} />
      <Route path="/contact" component={Contact} />
      <Route path="/about" component={About} />
      <Route path="/services" component={Services} />

      <Route path="/" component={App} />

    </Switch>
  </BrowserRouter>,
  document.getElementById('root')
);
registerServiceWorker();

尽管ID是对象中的字符串,但由于某种原因您仍在解析为int:

const product = find(PRODUCTS, { id: this.props.match.params.id });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM