diff --git a/getstarted/react.md b/getstarted/react.md index 98c33e7d..eb8b654f 100644 --- a/getstarted/react.md +++ b/getstarted/react.md @@ -14,24 +14,34 @@ permalink: /indepth/development/react.html ## Preparation -Make sure you have [node](https://nodejs.org/) and [yarn](https://yarnpkg.com/cli/install) installed. `node 14.4.0` and `yarn 1.22.4` are used in the example below. +Make sure you have [node](https://nodejs.org/) installed. `node 20.18.2` is used in the example below. ## Create the Sample Project -### Create a Bootstrapped Raw React Application +### Create a React project using Vite: ``` cmd -npx create-react-app dwt-react +npm create vite@latest dwt-react --template react ``` -### **cd** to the root directory of the application and install the `dwt` and `ncp` package +After running this, you will need to select the following options: +- Select a framework: React +- Select a variant: JavaScript + +### Navigate to the project folder: + +``` cmd +cd dwt-react +``` + +### Install dependencies and the required packages for DWT and NCP: ``` cmd -yarn add dwt +npm install ``` ``` cmd -yarn add ncp +npm install dwt ncp ``` > `ncp` is used to copy static resources files. @@ -42,10 +52,11 @@ Open `package.json` and change `scripts` like this: ``` json "scripts": { - "start": "ncp node_modules/dwt/dist public/dwt-resources && react-scripts start", - "build": "react-scripts build && ncp node_modules/dwt/dist build/dwt-resources", - "test": "ncp node_modules/dwt/dist public/dwt-resources && react-scripts test", - "eject": "react-scripts eject" + "copy-resources": "ncp node_modules/dwt/dist public/dwt-resources", + "dev": "npm run copy-resources && vite", + "build": "npm run copy-resources && vite build", + "lint": "eslint .", + "preview": "vite preview" }, ``` @@ -57,60 +68,58 @@ We can get these resource files in a few different ways. See our [resource loadi ### Generate a Component -Under `/src/`, create a new JavaScript file and name it `dwt.js`. +Under `/src/`, create a new JavaScript file and name it `dwt.jsx`. ### Edit the Component -* Copy the following to the newly created `dwt.js`. +* Copy the following to the newly created `dwt.jsx`. ``` typescript -import React from 'react'; +import React, { useEffect, useRef } from 'react'; import Dynamsoft from 'dwt'; -export default class DWT extends React.Component { - constructor(props) { - super(props); - } - DWTObject = null; - containerId = 'dwtcontrolContainer'; - componentDidMount() { +function DWT() { + const containerId = 'dwtcontrolContainer'; + const dwtObject = useRef(null); + + useEffect(() => { Dynamsoft.DWT.RegisterEvent('OnWebTwainReady', () => { - this.Dynamsoft_OnReady() + dwtObject.current = Dynamsoft.DWT.GetWebTwain(containerId); }); + Dynamsoft.DWT.ProductKey = 'YOUR-PRODUCT-KEY'; Dynamsoft.DWT.ResourcesPath = "/dwt-resources"; Dynamsoft.DWT.Containers = [{ WebTwainId: 'dwtObject', - ContainerId: this.containerId, + ContainerId: containerId, Width: '300px', Height: '400px' }]; + Dynamsoft.DWT.Load(); - } - Dynamsoft_OnReady() { - this.DWTObject = Dynamsoft.DWT.GetWebTwain(this.containerId); - } - acquireImage() { - if (this.DWTObject) { - this.DWTObject.SelectSourceAsync() - .then(() => { - return this.DWTObject.AcquireImageAsync({ - IfCloseSourceAfterAcquire: true, - }); - }) - .catch((exp) => { - console.error(exp.message); + }, []); + + const acquireImage = () => { + if (dwtObject.current) { + dwtObject.current.SelectSourceAsync() + .then(() => dwtObject.current.AcquireImageAsync({ + IfCloseSourceAfterAcquire: true, + })) + .catch((error) => { + console.error(error.message); }); } - } - render() { - return (<> - -