<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
<head {{ HEAD_ATTRS }}>
<style>
html,
body {
font-family: "Montserrat", Helvetica, Arial, Verdana, Tahoma, sans-serif !important;
}
</style>
{{ HEAD }}
</head>
<body {{ BODY_ATTRS }}>
{{ APP }}
{% if (ENV.NODE_ENV === 'production') { %}
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m, e, t, r, i, k, a) {
m[i] = m[i] || function() {
(m[i].a = m[i].a || []).push(arguments)
};
m[i].l = 1 * new Date();
k = e.createElement(t), a = e.getElementsByTagName(t)[0], k.async = 1, k.src = r, a.parentNode.insertBefore(k, a)
})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(66856768, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
</script>
<noscript>
<div>
<img src="https://mc.yandex.ru/watch/66856768" style="position:absolute; left:-9999px;" alt="" />
</div>
</noscript>
<!-- /Yandex.Metrika counter -->
{% } %}
</body>
</html>
// Эта функция определена где-то в другом месте (для примера вместо AsyncStorage)
declare function someMagic(key: string): string | null;
type StoreTypes = {
theme: 'light' | 'dark' | null;
auth: 'true' | 'false' | null;
}
// Собственно декларация функции
function getKey<K extends keyof StoreTypes>(key: K): StoreTypes[K] {
return someMagic(key) as StoreTypes[K];
}
// type t = "light" | "dark" | null
const t = getKey('theme');
// type a = "true" | "false" | null
const a = getKey('auth');
// ошибка "test" не является ключом в StoreTypes
const x = getKey('test');
#RTRegistration * {}
export default class LoadingMask extends React.Component {
constructor(props) {
super(props)
this.state = {
togle: false
}
this._timeId = null;
}
componentDidMount () {
this._timeId = setTimeout(() => this.setState({togle: true}), 3000)
}
componentWillUnmount () {
clearTimeout(this._timeId);
}
render() {
return (
<View>
{this.state.togle ?
<View style={{flexDirection: 'row', justifyContent: "center", marginTop: 20,}}>
<Text style={{marginRight: 20, color: '#4488fe'}} onPress={this.props.action}>Попробовать еще раз?</Text>
<Ionicons name="md-refresh" size={20} color="#4488fe" />
</View>
: <ActivityIndicator size="large" color="#CCC" />
}
</View>
)
}
}
На одной странице, в футере, надо скрыть div, в котором есть 2 картинки с ссылками на внутренние страницы сайта и форма подписки на новости.
В гугле находил, что нельзя скрывать контент display: none, отрицательно влияет на сео.Это относится к основному контенту страницы, релеватному запросам пользователя, всему что важно для целостности материала. Шаблонная форма подписки и пара баннеров из футера особой ценности не несут.
I'd recommend not using hidden text to hide keywords on a page. If something is relevant to the page, then it's probably relevant to the user too, so I'd recommend showing it to the user. John Mueller