Я хочу использовать соединение Redux и asyncConnect в компоненте без состояния (чистая функция), поэтому мне нужно реорганизовать эти декораторы класса в обычные вызовы функций.Как реорганизовать этот код подключения Redux?
Однако я не могу найти пример asyncConnect с подключением в любом месте.
Вот что у меня есть:
@asyncConnect([{
deferred: true,
promise: ({ params, store: { dispatch, getState } }) => {
if (!isLoaded(getState())) {
return dispatch(loadUser(params.userID))
}
},
}])
@connect(
state => ({ // eslint-disable-line
user: state.publicData.user.data,
error: state.publicData.user.error,
loading: state.publicData.user.loading,
}),
{ initializeWithKey })
export default class UserProfile extends Component {
...stuff
}
Вот что мне нужно:
asyncConnect(
someStuff,
connect(moreStuff)
)(props => <div />)
Я просто понятия не имею, как на самом деле написать это.
Очень полезно, спасибо. Вы правильно говорите, что этот подход также применим к классам, интересно, есть ли какая-либо польза для декораторов, кроме «более приятного» синтаксиса? –
Я думаю, что настоящая «польза» декораторов - это их коллокация с классом, который они украшают. Легче узнать, какое дополнительное поведение имеет класс. Моя единственная проблема с ними заключается в том, что эта функция все еще находится в предложении и в настоящее время подлежит обновлению. Таким образом, вы ставите свою базу кода под угрозу для какой-либо работы по обновлению администратора, если это предложение изменится. – ctrlplusb
Я не думаю, что сочинять можно так. Даже самый базовый пример не выполняется с помощью TypeError: 'export default compose (function() {return true})' 'TypeError: (0, _reactRedux.compose) не является функцией' –