Как передать переменную из одного файла JS в запрос, присутствующий в другом файле?

В моей работе есть 2 файла index.js и post.js. файл index.js содержит запрос graphql, как показано ниже.

export const query = graphql`
 query IndexPageQuery($Limit: Int) {
  allMarkdownRemark(sort: {fields: [frontmatter___date], order: DESC}, limit: $Limit) {
  totalCount`}}

Post.js имеет возвращаемое значение, как показано ниже:

return(          
  <div className = {`all-posts ${this.props.featured ? 'featured' : ''}`}>
  <h3 className = "sidebar-heading"> More Posts </h3> 
    {this.props.posts.map(({ node }) => (
    <div className = "post" key = {node.id}>
    <Link
        to = {node.fields.slug}
        css = {{ textDecoration: `none`, color: `inherit` }}
      >
      <div>
      <p>
        {node.frontmatter.title}{" "}
      </p>
      <span>— {node.frontmatter.date}</span>
      </div>
    </Link>
    </div>
  ))}

Теперь я не могу передать значение переменной Limit из post.js в index.js. Любое решение, как это сделать?

Если вы используете веб-пакет, установите глобальную переменную запроса, например, global.query = query;, надеюсь, это поможет вам

Jagjeet Singh 23.06.2018 09:32

@JagjeetSingh Нет; На самом деле, я спрашиваю, как я могу установить значение переменной в post.js, чтобы оно отображалось в запросе, представленном в index.js

Hemant Arora 23.06.2018 09:38

@JagjeetSingh, как в ссылке здесь [graphql.github.io/graphql-js/mutations-and-input-types/] он показал рендеринг переменных в том же файле, но мне нужно получить к ним доступ из другого файла

Hemant Arora 23.06.2018 09:41

Вы можете использовать импорт в файле post.js, например import index from './index.js', и использовать index.query

Jagjeet Singh 23.06.2018 09:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
44
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Определите свой запрос как объект, прикрепленный к глобальному объекту window следующим образом:

window['query'] = graphql`
  query IndexPageQuery($Limit: Int) {
  allMarkdownRemark(sort: {fields: [frontmatter___date], order: DESC}, limit: $Limit) {
  totalCount`}};

Затем убедитесь, что какой бы файл ни инициализировал эту переменную, загружен перед любых файлов, которые зависят от вашей переменной запроса. Вы сможете получить к нему доступ так: window.query.

Например, если вы определяете свой запрос в index.js, убедитесь, что вы загрузили index.js, прежде чем загружать post.js или любой другой файл js, который зависит от этого запроса. (Не всегда необходимо, если у вас нет IIFE, но позволяет избежать случайных неопределенных проблем)

Примечание: Причина, по которой я определяю ваш запрос для объекта окна, выглядит следующим образом: window['query'] = query вместо window.query = query, потому что webpack не изменяет имя ключа объекта. Если вы определите его как window.query = query, webpack изменит имя.

Вы слышали о sessionStorage?

вы можете сохранять данные в паре ключ / значение и читать их где угодно.

Другие вопросы по теме