Частичный контент Paywall в React

В настоящее время я работаю над компонентом, который получает данные своего основного содержимого от внешний API.

Данные представлены в виде строки с содержимым html, поэтому я использую dangerouslySetInnerHTML для визуализации содержимого.

{ ....

content: "<div id = "attachment_565754" class = "wp-caption alignnone"> <img class = "size-large wp-image-565754"...../>"

......
}

<div className = "col col-sm-12 col-md-12 col-lg-12"dangerouslySetInnerHTML {{__html: this.props.postDetails.content}}>
</div>

Требуется частично скрыть контент после того, как пользователь посетил сайт 5 раз. В настоящее время я использую местное хранилище для отслеживания посещений пользователей, как временное решение для этой части.

Но как мне частично заблокировать контент, когда весь контент поступает из внешнего api.

Поведение ключевого слова "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) для оценки ваших знаний,...
2
0
564
1

Ответы 1

В идеале вы бы даже не загружали его, если он вам не нужен. Затем, независимо от того, загрузили вы его или нет, используйте некоторые локальные переменные, чтобы определить, должен ли он отображаться:

constructor(props) {
  super(props);
  this.state = {};
}

componentDidMount() {
  const shouldLoad = this.shouldLoad(); // Would return true/false based on localStorage value

  if (shouldLoad) {
    someDataCall().then((data) => {
      this.setState({ data });
    });
  }
}

render() {
  const data = this.state.data;

  return (
    <div>
    {data &&
      <div
        className = "col col-sm-12 col-md-12 col-lg-12"
        dangerouslySetInnerHTML = {{__html: this.props.postDetails.content}}>
      </div>
    }
    </div>
  );
}

При этом div с данными в нем отображается только в том случае, если данные были загружены, и данные будут загружаться только в том случае, если ваши значения localStorage говорят, что это должно быть.

Но я все же хочу показать контент, например, если пользователь посетил сайт в 6-й раз, но только частично. Как вы видите на сайтах, посвященных журналистике, они показывают только первый абзац, а остальные размывают.

RRP 29.11.2018 01:59

Вы хотите разделить контент, который вы визуализируете с помощью dangerouslySetInnerHTML, и скрыть его половину? Это потребует некоторого взлома за пределами React, потому что мы не можем контролировать контент после его передачи dangerouslySetInnerHTML.

Solo 29.11.2018 02:02

Хотя вы можете изменить то, что помещается в data, когда вы получаете ответ от сетевого вызова, хотя это потребует от вас синтаксического анализа HTML. Похоже, у вас должен быть способ сообщить API, какие данные вам нужны.

Matthew Herbst 29.11.2018 02:37

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