234 lines
5.9 KiB
Markdown
234 lines
5.9 KiB
Markdown
# v0.10: Update instructions
|
|
|
|
## New features in the second quarter
|
|
|
|
- Association field component improvements, support for multiple component switching
|
|
- Select
|
|
- Record picker
|
|
- Sub-form/Sub-details
|
|
- Sub-table
|
|
- File manager
|
|
- Title(read only)
|
|
- Quick creation of relational data, supports two quick creation modes
|
|
- Add in drop-down menu to quickly create a new record based on the title field
|
|
- Add in pop-up window to configure complex add forms
|
|
- Duplicate action, supports two modes
|
|
- Direct duplicate
|
|
- Copy into the form and continue to fill in
|
|
- Form data templates
|
|
- Filter data scope support variables
|
|
- List block
|
|
- Grid card block
|
|
- Mobile client plugin
|
|
- User authentication plugin, support for different authentication methods
|
|
- Email/Password
|
|
- SMS
|
|
- OIDC
|
|
- SAML
|
|
- Workflow nodes
|
|
- Manual node upgrade, support for adding and editing from existing collections
|
|
- Loop node
|
|
- Aggregate node
|
|
- File manager
|
|
- Provide file collection template
|
|
- Provide file manager component
|
|
|
|
## Upgrading applications
|
|
|
|
### Upgrading for Docker compose
|
|
|
|
No change, upgrade reference [Upgrading for Docker compose](/welcome/getting-started/upgrading/docker-compose)
|
|
|
|
### Upgrading for Git source code
|
|
|
|
v0.10 has a major upgrade of dependencies, so to prevent errors when upgrading the source code, you need to delete the following directories before upgrading
|
|
|
|
```bash
|
|
# Remove .umi cache
|
|
yarn rimraf -rf "./**/{.umi,.umi-production}"
|
|
# Delete compiled files
|
|
yarn rimraf -rf "./packages/*/*/{lib,esm,es,dist,node_modules}"
|
|
# Remove dependencies
|
|
yarn rimraf -rf node_modules
|
|
```
|
|
|
|
See [Upgrading for Git source code](/welcome/getting-started/upgrading/git-clone) for more details
|
|
|
|
### Upgrading for create-nocobase-app
|
|
|
|
It is recommended that `yarn create` re-download the new version and modify the `.env` configuration, for more details refer to [major version upgrade guide](/welcome/getting-started/upgrading/create-nocobase-app#major-upgrade)
|
|
|
|
## Upcoming deprecated and potentially incompatible changes
|
|
|
|
### Sub-table field component
|
|
|
|
Not compatible with new version, block fields need to be removed and reassigned (UI reassignment only)
|
|
|
|
### Attachment upload api changes
|
|
|
|
In addition to the built-in attachments table, users can also custom file collection, the upload api for attachments has been changed from `/api/attachments:upload` to `/api/<file-collection>:create`, upload is deprecated, still compatible with v0.10 but will be Removed.
|
|
|
|
### signin/signup api changes
|
|
|
|
The nocobase kernel provides a more powerful [auth module](https://github.com/nocobase/nocobase/tree/main/packages/plugins/auth) with the following changes to the user login, registration, verification, and logout apis:
|
|
|
|
```bash
|
|
/api/users:signin -> /api/auth:signIn
|
|
/api/users:signup -> /api/auth:signUp
|
|
/api/users:signout -> /api/auth:signOut
|
|
/api/users:check -> /api/auth:check
|
|
```
|
|
|
|
Note: The above users interface, which is deprecated, is still compatible with v0.10, but will be removed in the next major release.
|
|
|
|
### Adjustments to date field filtering
|
|
|
|
If date related filtering was previously configured in the data range, it needs to be deleted and reconfigured.
|
|
|
|
## Third-party plugin upgrade guide
|
|
|
|
### Dependencies upgrade
|
|
|
|
dependencies mainly including
|
|
|
|
- `react` upgrade to v18
|
|
- `react-dom` upgrade to v18
|
|
- `react-router` upgrade to v6.11
|
|
- `umi` upgrade to v4
|
|
- `dumi` upgrade to v2
|
|
|
|
The `package.json` dependencies should be changed to the latest version, e.g:
|
|
|
|
```diff
|
|
{
|
|
"devDependencies": {
|
|
+ "react": "^18".
|
|
+ "react-dom": "^18".
|
|
+ "react-router-dom": "^6.11.2".
|
|
- "react": "^17".
|
|
- "react-dom": "^17".
|
|
- "react-router-dom": "^5".
|
|
}
|
|
}
|
|
```
|
|
|
|
### Code changes
|
|
|
|
Because react-router has been upgraded, the related code also needs to be changed, the main changes include
|
|
|
|
### Layout Component
|
|
|
|
Layout component needs to use `<Outlet />` instead of `props.children`.
|
|
|
|
```diff
|
|
import React from 'react';
|
|
+ import { Outlet } from 'react-router-dom';
|
|
|
|
export default function Layout(props) {
|
|
return (
|
|
<div>
|
|
- { props.children }
|
|
+ <Outlet />
|
|
</div>
|
|
);
|
|
}
|
|
```
|
|
|
|
if you use `React.cloneElement` to render the route component, you need to change it like this:
|
|
|
|
```diff
|
|
import React from 'react';
|
|
+ import { Outlet } from 'react-router-dom';
|
|
|
|
export default function RouteComponent(props) {
|
|
return (
|
|
<div>
|
|
- { React.cloneElement(props.children, { someProp: 'p1' }) }
|
|
+ <Outlet context={{ someProp: 'p1' }} />
|
|
</div>
|
|
);
|
|
}
|
|
```
|
|
|
|
Change the route component to get the value from `useOutletContext`
|
|
|
|
```diff
|
|
import React from 'react';
|
|
+ import { useOutletContext } from 'react-router-dom';
|
|
|
|
- export function Comp(props){
|
|
+ export function Comp() {
|
|
+ const props = useOutletContext();
|
|
return props.someProp;
|
|
}
|
|
```
|
|
|
|
### Redirect
|
|
|
|
`<Redirect>` is changed to `<Navigate replace />`.
|
|
|
|
```diff
|
|
- <Redirect to="about" />
|
|
+ <Navigate to="about" replace />
|
|
```
|
|
|
|
### useHistory
|
|
|
|
`useNavigate` is changed to `useHistory`.
|
|
|
|
```diff
|
|
- import { useHistory } from 'react-router-dom';
|
|
+ import { useNavigate} from 'react-router-dom';
|
|
|
|
- const history = useHistory();
|
|
+ const navigate = useNavigate();
|
|
|
|
- history.push('/about')
|
|
+ navigate('/about')
|
|
|
|
- history.replace('/about')
|
|
+ navigate('/about', { replace: true })
|
|
```
|
|
|
|
### useLocation
|
|
|
|
`useLocation<type>()` is changed to `useLocation`.
|
|
|
|
```diff
|
|
- const location= useLocation<type>();
|
|
+ const location= useLocation();
|
|
```
|
|
|
|
`const { query } = useLocation()` is changed to `useSearchParams()`。
|
|
|
|
```diff
|
|
- const location = useLocation();
|
|
- const query = location.query;
|
|
- const name = query.name;
|
|
+ const [searchParams, setSearchParams] = useSearchParams();
|
|
+ searchParams.get('name');
|
|
```
|
|
|
|
### path
|
|
|
|
All of the following are valid route paths in v6:
|
|
|
|
```
|
|
/groups
|
|
/groups/admin
|
|
/users/:id
|
|
/users/:id/messages
|
|
/files/*
|
|
/files/:id/*
|
|
```
|
|
|
|
The following RegExp-style route paths are not valid in v6:
|
|
|
|
```
|
|
/tweets/:id(\d+)
|
|
/files/*/cat.jpg
|
|
/files-*
|
|
```
|
|
|
|
For more api changes, please refer to [react-router@6](https://reactrouter.com/en/main/upgrading/v5)。
|