Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2018, 20:15
Новичок на форуме
Отправить личное сообщение для VasilisAngel Посмотреть профиль Найти все сообщения от VasilisAngel
 
Регистрация: 06.04.2015
Сообщений: 1

Reactjs search bar с данными .json
Добрый день! Знания React'а довольно скудные, в процессе изучения и выполнения заданий возник вопрос.
Задача стоит в следующем:
необходимо сделать список контактов с мгновенным search bar'ом. Сложность для меня заключается в том, что данные (контакты) находятся в отдельном файле .json , я не знаю как правильно его "внедрить" в документ .html, как правильно обращаться к массивам и объектам внутри них конкретно в этой ситуации. Смотрела множество примеров реализации мгновенного поиска контактов в списке, но все данные контактов были помещены в переменную и находились непосредственно в документе .html .
Вот, собственно , недокод, который должен выводить имена списком из документа .json
import React from 'react'
    import {render} from 'react-dom'
    import JSON from 'clients'
    var ClientsData = JSON.parse(fs.readFileSync('./clients.json'));
            var ClientsList = React.createClass({
                render: function() {
                    return(
                      <div>
                        <ul>
                            {
                            ClientsData.map( function(el){
                                return <li> {el.firstName} </li>;
                            })
                            }
                         </ul>
                      </div>
                     );
                }
            });
            ReactDOM.render(
                    <ClientsList />,
            document.getElementById("clients_list")
            );


В html это выглядит так:
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link href="css1.css" rel="stylesheet" type="text/css"/>
         <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser.js"></script>
<script src="clients.json"></script>
    
    </head>
    <body>
        
           
            <div id="clients_list"></div>
            <script type="text/babel">
/ далее скрипт, что выше

А это, собственно, данные из .json
[
  {
    "general": {
      "firstName": "Masha",
      "lastName": "Ivanova",
      "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/kevinoh/128.jpg"
    },
    "job": {
      "company": "Eva",
      "title": "Seller"
    },
    "contact": {
      "email": "maxa_ivanova@gmail.com",
      "phone": "(895) 135-0678"
    },
    "address": {
      "street": "Karla Marksa, 35",
      "city": "Dnepr",
      "zCode": "48155",
      "country": "Ukraine"
    }
  },
  {
    "general": {
      "firstName": "Ira",
      "lastName": "Ivchenko",
      "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/andysolomon/128.jpg"
    },
    "job": {
      "company": "ATB",
      "title": "cahier"
    },
    "contact": {
      "email": "ira_ivchenko_95@yahoo.com",
      "phone": "375-45-15"
    },
    "address": {
      "street": "Gagarina, 48",
      "city": "Zaporozhie",
      "Code": "145-25-178",
      "country": "Ukraine"
    }
  },
  {
    "general": {
      "firstName": "Arnold",
      "lastName": "Black",
      "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/holdenweb/128.jpg"
    },
    "job": {
      "company": "Gorillaz",
      "title": "manager"
    },
    "contact": {
      "email": "arnold_bl@hotmail.com",
      "phone": "305-47-26"
    },
    "address": {
      "street": "Left-bank street",
      "city": "Grodno",
      "Code": "546-32-96",
      "country": "Belarus"
    }
  }
]

Возлагаю надежды на вашу помощь
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2018, 11:29
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

VasilisAngel,
1 вариант: получать json с сервера обычным XMLHttpRequest`ом
2 вариант: импортировать этот json файл в компонент, и вебпаком получить его в сборке https://stackoverflow.com/questions/...ile-in-webpack
import Clients from './clients.json'
...
var ClientsList = React.createClass({
                render: function() {
                    return(
                      <div>
                        <ul>
                            {
                            Clients.map( function(el){
                                return <li> {el.general.firstName} </li>;
                            })
                            }
                         </ul>
                      </div>
                     );
                }
            });

и удалить этот бред из html
<script src="clients.json"></script>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск