isAuthenticated
инициализируются после асинхронного вызова loadUser
. Поэтому при старте приложения пользователь ещё не авторизован и isAuthenticated
в store равно false. при попытке забрать фоторграфию вижу, что Express отдаёт мне не base64 строку, а, как я понял, Unit8Array, вида:
[{"photo":{"type":"Buffer","data":[105,86,66,79,82,119,48,75,71,103,111,65,65,65,65,78,83,85,104,69....
mysqlConnection.query
отдаёт он result содержащий свойство «photo» типа Blob Success URL пусть пишет в базу айдишник юзера и оплачено: true, и при входе на нужную страницу пусть это проверяется, и если нет такого, то редирект?
Class BookList extends Component {
componentDidMount() {
// 1. receive data
const {bookstoreService} = this.props;
const data = bookstoreService.getBooks();
//console.log(data); // full
// 2. dispatch action to store
this.props.dispatch( this.props.booksLoaded(data)); // !!!! dispatch
}
....
получился запрос вида back.end/getInfo?user_id=xxx.
Суть вопроса не в том, как передать данные из фронтенда в бэкенд, а наоборот, чтобы React знал id пользователя и формировал соответствующие запросы.
Для его идентификации пишется id в сессию и идет переадресация на React-страницу. Н
id
в url
для идентификации, оставьте эту работу для сервера. const initialState = {items: []};
const reducer = (state, action) => {
switch (action.type) {
case 'ADD':
return {
...state,
items: [...state.items, action.newItem]
};
default:
throw new Error();
}
};
const App = () => {
const [state, dispatch] = useReducer(reducer, initialState);
const onAdd = e => {
window.fetch(url, {method: 'post', body: {name: 'new task'} }) // отправляем новую задачу на сервер
.then(data => dispatch({ type: 'ADD', newItem: data}) // data = {id:9, name: 'new task'} ответ сервера в reduce
.catch(err => dispatch({ type: 'ERR', err}) // как то ошибку обработать
}
return <button onClick={onAdd}> {state.items.length} </button>;
}