const Wrapper = styled.div`
// some styles
`;
const ChildElement = styled.div`
// some styles
`;
class MyComponent extends React.Component {
static ChildElement = ChildElement;
render() {
const { className } = this.props;
return (
<Wrapper className={className}>
<ChildElement>Some text</ChildElement>
</Wrapper>
)
}
}
export default MyComponent;
const SyledMyComponent = styled(MyComponent)`
// some styles
${MyComponent.ChildElement} {
// some styles for ChildElement
}
`;
const AbstractElement = styled.div`
// some styles
`;
const ConcreteElement = AbstractElement.extend`
// some styles
`;
Cookies do not provide isolation by port.
Similarly, cookies for a given host are shared across all the ports on that host, even though the usual "same-origin policy" used by web browsers isolates content retrieved via different ports.
Cookies не обеспечивают изоляцию портом. Если cookie можно прочитать службой, работающей на одном порту, cookie также читается службой, запущенной на другом порту того же сервера. Если файл cookie доступен для записи службой на одном порту, cookie также может быть доступен для записи службой, запущенной на другом порту того же сервера. По этой причине серверы НЕ ДОЛЖНЫ запускать взаимно недоверяющие службы на разных портах одного и того же хоста и использовать файлы cookie для хранения конфиденциальной информации о безопасности.
function isAuthenticated(req, res, next) {
const { token } = req.body;
console.log('isAuthenticated token',token)
const user = auth.checkToken();
// Проверем есть ли пользователь с таким токеном,
// Если есть, то в user сохраняем объект с пользователем.
// 777,admin,admin,706669f29acdc5a14d2a2a1f24e45bd898db6898
if (user) {
req.user = user;
return next();
} else {
res.json({ message: "ERROR_AUTH_TOKEN", data: {}});
}
}
app.post("/api/v1/links/get_links", isAuthenticated, async (req, res) => {
//777 - это ID пользователя
const userLinks = await links.getUserLinksByID(db, req.user.id);
res.json({ message: "USER_LINKS", data: { userLinks } });
});
однако я придумал и альтернативное решение: написать функцию (или класс с методами), которая бы имела доступ к store сама по себе. Вызывая эту функцию в любом месте приложения, не приконнекченный компонент будет получать актуальные данные из state.
{
"extends": [
"airbnb",
"prettier",
"prettier/react"
],
"plugins": [
"prettier"
],
"parser": "babel-eslint",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
}
},
"env": {
"browser": true,
"node": true
},
"rules": {
"no-plusplus": 0,
"no-confusing-arrow": 0,
"no-restricted-syntax": 0,
"guard-for-in": 0,
"class-methods-use-this": 0,
"jsx-a11y/no-static-element-interactions": 0,
"jsx-a11y/anchor-is-valid": 0,
"react/no-danger": 0,
"react/prop-types": 0,
"react/jsx-filename-extension": 0,
"react/jsx-curly-brace-presence": ["error", { "props": "never", "children": "never" }],
"import/no-unresolved": ["error", { "commonjs": true }],
"import/extensions": 0,
"import/no-extraneous-dependencies": ["error", {"devDependencies": true}],
"import/prefer-default-export": 0,
"prettier/prettier": ["error", {
"singleQuote": true,
"trailingComma": "all"
}]
},
"settings" : {
"import/resolver": {
"webpack": {
"config": "webpack/base.config.js"
}
}
}
}
{
"assets-webpack-plugin": "^3.5.1",
"babel-eslint": "^8.2.1",
"eslint": "^4.18.0",
"eslint-config-airbnb": "^16.1.0",
"eslint-config-prettier": "^2.9.0",
"eslint-import-resolver-webpack": "^0.8.4",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-jsx-a11y": "^6.0.3",
"eslint-plugin-prettier": "^2.6.0",
"eslint-plugin-react": "^7.6.1",
"prettier": "^1.10.2",
}
это короткий вариант записи, который можно использовать только с babel. Конкретно плагин transform-class-properties. Он входит в прессеты stage-2, stage-1, stage-0. Так, что если используете один из них смело используйте.
Запись:class Parent extends Component { constructor(props) { super(props); this.state = { data: [] }; this.handler = this.handler.bind(this); } handler(e) { // do something } }
Аналогична:class Parent extends Component { state = { data: [], }; handler = e => { // do something }; }
В React разработке это один стандартов.