Если вы выполняете любую интерполяцию на стороне сервера, единственный правильный способ сделать это - <>
$interpolateProvider.startSymbol('<{').endSymbol('}>');
. Все остальное является XSS-вектором.
Это потому что любые угловые разделители, которые не экранируются Django, могут быть введены пользователем в интерполированную строку; если кто-то устанавливает свое имя пользователя как «{{evil_code}}», Угловой будет с радостью запускать его . Однако если вы используете символ , чем escape-файлы Django , это не произойдет.
Нет такой проблемы в использовании <Hidden />
, просто добавляется <div>
с необходимым CSS, чтобы показать или нет ваш компонент. Однако лучшим подходом было бы добавить класс CSS непосредственно к вашим компонентам <Foo />
и <Bar />
, чтобы избежать лишних <div>
на вашей странице, например:
function MyComp (props) {
return (
<>
<Foo className={props.classes.foo} />
<Bar className={props.classes.bar} />
</>
)
}
необходимо в настройках SSR, потому что реализация JS может «прошить» компонент на странице, а затем удалить его после загрузки JS. Недостатком реализации CSS является то, что элемент хранится в DOM.
PS: withWidth
устареет .