Verifique se você está conectado:
<Router history={history}>
<Route path="/" component={MainLayout} onEnter={isLogin}>
<IndexRoute component={User} />
<Route path='tag' component={Tag} />
</Route>
<Route path="/login" component={Login} />
<Route path="*" component={NotFound} />
</Router>
不能直接在父路由上加onEnter,所有的子路由都生效么?
或者有别的什么办法
Então, como controlar o salto no código?
Sugiro usar o segundo (usando o controle de solicitação), é muito simples, encapsule sua função de solicitação e, em seguida, trate-a de acordo com a situação (página de salto, prompt pop-up, etc.)
Processando na assinatura:
history.listen
Para obter detalhes sobre como saltar, consulte o salto de página com base na ação @ dva-knowledge
Quero trazer o token de login em cada serviço de solicitação. Como posso escrever melhor neste caso?
@rrandom encapsulei um $ http fora de fetch e adicionei um token a este
@hbrls Seu token existe na loja?Se sim, como você escreve seu $ http
Armazene o token no cookie. Acho que a implementação de $ http deve ser semelhante a https://github.com/dvajs/dva-cli/blob/master/boilerplates/app/src/utils/request.js
@sorrycc Como faço para definir o token para o cookie no
Definir o token no cookie não é o que dva faz, mas o cabeçalho de resposta do lado do servidor o faz.
@sorrycc Existe alguma maneira de dora? Minha abordagem atual é que todas as APIs irão adicionar tokens no lado do servidor do site. Só descobri dva e dora ontem, que são muito boas.
Eu fiz ambos.
A primeira é pular para a página para determinar se o token é válido. Isso é feito principalmente para controlar as permissões de página da web.
O segundo tipo de solicitação de API para cada página traz o token. O servidor determina se ele tem permissão para acessar a API. Porque o servidor pode ser acessado por APP móvel
Você pode colocá-lo em localstorage e usar jsonwebtoken
As informações de login do usuário podem ser salvas em login_model (equivalente ao modelo global), então como obter essas informações de login_model em outros modelos?
Este eu encontrei o método yield select (global => global)
history.listen
só pode ser processado depois que a página pula, certo? Não consegue processar antes de pular como onEnter
? Desta forma, todas as ações de carregamento de dados precisam estar concentradas no modelo, não podendo ser colocadas em componentDidMount
, caso contrário a solicitação será emitida antes do processamento feito por history.listen
.
@sorrycc Eu
O onEnter está no router.js? Ele pode ser processado por app._store.dispatch primeiro.
app.router(({ history, app }) => {});
A instância do aplicativo pode ser obtida aqui, https://github.com/dvajs/dva/blob/4cca243/index.d.ts#L70 .
@sorrycc onEnter é que o método acima foi usado para obter despacho em router.js com sucesso. Muito obrigado.
@sorrycc como obter despacho em request.js
Encapsulei uma camada de request.js. Depois que o usuário faz login, o servidor envia o token de volta e o salva no armazenamento local e coloca o token no cookie antes de buscar. O servidor verifica o token. Se a verificação do token falhar, o back-end retorna um 401 na resposta request.js. No método, o tratamento de erros unificado gera Erro. Capture o erro correspondente no índice e, em seguida, use window.location = '/ login' para pular para a página de login
@ liSong5713 Por favor,
Em meu projeto, tentei duas maneiras de permanecer conectado:
https://github.com/HeskeyBaozi/dva-blog-crud-demo
@zhanbohui é o mesmo que selecionar rendimento (globalState => estado)) em vigor
Eu tenho que usar dva?
A página
Comentários muito úteis
Em meu projeto, tentei duas maneiras de permanecer conectado:
https://github.com/HeskeyBaozi/dva-blog-crud-demo