Skip to content

Commit

Permalink
refactor: hooks usage
Browse files Browse the repository at this point in the history
  • Loading branch information
leftstick committed Jan 7, 2020
1 parent 3e7c866 commit 0cfc04c
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 13 deletions.
6 changes: 4 additions & 2 deletions generators/app/templates/eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
"prettier/react",
"prettier/standard"
],
"plugins": ["prettier"],
"plugins": ["prettier", "react-hooks"],
"rules": {
"max-len": ["error", { "code": 120 }],
"react/prop-types": ["error"]
"react/prop-types": ["error"],
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}
11 changes: 6 additions & 5 deletions generators/app/templates/src/hooks/useAuthModel.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { message } from 'antd'
import { createModel } from 'hox'
import { useState, useEffect } from 'react'
import { useState, useEffect, useCallback } from 'react'
import { formatMessage } from 'umi-plugin-react/locale'

import API from '@/helpers/api'
Expand All @@ -20,13 +20,14 @@ function useAuthModel() {
}
}, [tokenState])

// redirect to login page whenver tokenState changed && is empty
useEffect(() => {
if (!tokenState) {
redirectTo('/o/login')
}
}, [tokenState])

function sign(account, password) {
const sign = useCallback((account, password) => {
return API.post('/login', {
data: {
account,
Expand All @@ -42,13 +43,13 @@ function useAuthModel() {
}
return data
})
}
}, [])

function signout(account, password) {
const signout = useCallback((account, password) => {
clearAll()
setCurrentUser(null)
setTokenState(null)
}
}, [])

return {
currentUser,
Expand Down
11 changes: 8 additions & 3 deletions generators/app/templates/src/layouts/AuthRequiredLayout/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react'
import React, { useEffect } from 'react'
import PropTypes from 'prop-types'
import withRouter from 'umi/withRouter'
import { Layout, BackTop } from 'antd'
Expand All @@ -12,12 +12,17 @@ import styles from './index.less'
function AuthRequiredLayout({ children }) {
const { currentUser } = useAuthModel()

// remove spinner while signin
useEffect(() => {
if (currentUser) {
destoryGlobalSpinner()
}
}, [currentUser])

if (!currentUser) {
return null
}

destoryGlobalSpinner()

return (
<React.Fragment>
<BackTop />
Expand Down
6 changes: 4 additions & 2 deletions generators/app/templates/src/layouts/OpenPageLayout.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import React from 'react'
import React, { useEffect } from 'react'
import PropTypes from 'prop-types'

import { destoryGlobalSpinner } from '@/helpers/view'

function OpenPageLayout(props) {
const { children } = props

destoryGlobalSpinner()
useEffect(() => {
destoryGlobalSpinner()
}, [])

return <React.Fragment>{children}</React.Fragment>
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "generator-umi",
"version": "3.1.1",
"version": "3.1.2",
"description": "umi project generator",
"files": [
"generators"
Expand Down

0 comments on commit 0cfc04c

Please sign in to comment.