Современные SPA фреймворки - это обычно полностью отдельные приложения, которые никак не связаны к бэкэндом, а только отправляют на него запросы.
У меня, например Access-Control-Allow-Origin: *, потому что в этот заголовок можно добавить только один домен, а у нас их как минимум три: продакшн, дев и локальный сервер.
whatsapp://send?text=*
http://chat.x**-pie.com
interface State {
isMenu: boolean;
}
class App extends Component<null, State> {
state = { isMenu: true };
keyPressHandle = (event) => {
if (event.key === 'Escape') {
this.setState(state => ({ isMenu: !state.isMenu }));
}
}
render() { /* ... */ }
}
render() {
const { playList, slug } = this.props;
const index = playList.findIndex(i => i.slug === slug);
const video = playList[index];
const prev = playList[index - 1];
const next = playList[index + 1];
render(
<div>
{/* ... */}
<div>
{prev && <Link to={`/video/${prev.slug}`}>Prev</Link>}
{next && <Link to={`/video/${next.slug}`}>Next</Link>}
</div>
<div/>
);
}
allowSyntheticDefaultImports позволяет писать дефолтные импорты из модулей не имеющих дефолтных экспортов. Не влияет на код, просто отключает эту проверку.
esModuleInterop добавляет в код два хелпера __importStar и __importDefault
Код:
по-умолчанию будет скомпилирован в:
с esModuleInterop: true в:
Код:
c allowSyntheticDefaultImports: true будет скомпилирован в:
с esModuleInterop: true в: