mirror of
https://github.com/pezkuwichain/pezkuwi-ui.git
synced 2026-06-19 15:51:08 +00:00
useMem to replace useEffect/useState (#365)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import React, { useEffect, useRef, useState } from 'react';
|
||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import styled from 'styled-components';
|
||||
import { xxhashAsHex } from '@polkadot/util-crypto';
|
||||
|
||||
@@ -46,9 +46,13 @@ function getDataUrl (value: Uint8Array): string {
|
||||
|
||||
function Display ({ className, size, skipEncoding, style, value }: Props): React.ReactElement<Props> | null {
|
||||
const [{ image }, setFrameState] = useState<FrameState>({ frameIdx: 0, frames: [], image: null, valueHash: null });
|
||||
const [containerStyle, setContainerStyle] = useState(createImgSize(size));
|
||||
const timerRef = useRef<TimerState>({ timerDelay: FRAME_DELAY, timerId: null });
|
||||
|
||||
const containerStyle = useMemo(
|
||||
() => createImgSize(size),
|
||||
[size]
|
||||
);
|
||||
|
||||
// run on initial load to setup the global timer and provide and unsubscribe
|
||||
useEffect((): () => void => {
|
||||
const nextFrame = () => setFrameState((state): FrameState => {
|
||||
@@ -86,10 +90,6 @@ function Display ({ className, size, skipEncoding, style, value }: Props): React
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
useEffect((): void => {
|
||||
setContainerStyle(createImgSize(size));
|
||||
}, [size]);
|
||||
|
||||
useEffect((): void => {
|
||||
setFrameState((state): FrameState => {
|
||||
const valueHash = xxhashAsHex(value);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { createAddressPayload } from './util';
|
||||
import QrDisplay from './Display';
|
||||
@@ -16,11 +16,10 @@ interface Props {
|
||||
}
|
||||
|
||||
function DisplayExtrinsic ({ address, className, genesisHash, size, style }: Props): React.ReactElement<Props> | null {
|
||||
const [data, setData] = useState<Uint8Array | null>(null);
|
||||
|
||||
useEffect((): void => {
|
||||
setData(createAddressPayload(address, genesisHash));
|
||||
}, [address, genesisHash]);
|
||||
const data = useMemo(
|
||||
() => createAddressPayload(address, genesisHash),
|
||||
[address, genesisHash]
|
||||
);
|
||||
|
||||
if (!data) {
|
||||
return null;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { createSignPayload } from './util';
|
||||
import QrDisplay from './Display';
|
||||
@@ -18,11 +18,10 @@ interface Props {
|
||||
}
|
||||
|
||||
function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style }: Props): React.ReactElement<Props> | null {
|
||||
const [data, setData] = useState<Uint8Array | null>(null);
|
||||
|
||||
useEffect((): void => {
|
||||
setData(createSignPayload(address, cmd, payload, genesisHash));
|
||||
}, [address, cmd, payload, genesisHash]);
|
||||
const data = useMemo(
|
||||
() => createSignPayload(address, cmd, payload, genesisHash),
|
||||
[address, cmd, payload, genesisHash]
|
||||
);
|
||||
|
||||
if (!data) {
|
||||
return null;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
import { NetworkSpecsStruct } from '@polkadot/ui-settings';
|
||||
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
import QrDisplay from './Display';
|
||||
|
||||
import { encodeString } from './util';
|
||||
@@ -17,11 +17,10 @@ interface Props {
|
||||
}
|
||||
|
||||
function DisplayNetworkSpecs ({ className, networkSpecs, size, style }: Props): React.ReactElement<Props> | null {
|
||||
const [data, setData] = useState<Uint8Array | null>(null);
|
||||
|
||||
useEffect((): void => {
|
||||
setData(encodeString(JSON.stringify(networkSpecs)));
|
||||
}, [networkSpecs]);
|
||||
const data = useMemo(
|
||||
() => encodeString(JSON.stringify(networkSpecs)),
|
||||
[networkSpecs]
|
||||
);
|
||||
|
||||
if (!data) {
|
||||
return null;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
// This software may be modified and distributed under the terms
|
||||
// of the Apache-2.0 license. See the LICENSE file for details.
|
||||
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import React, { useCallback, useMemo } from 'react';
|
||||
import Reader from 'react-qr-reader';
|
||||
import styled from 'styled-components';
|
||||
|
||||
@@ -24,11 +24,10 @@ const DEFAULT_ERROR = (error: Error): void => {
|
||||
};
|
||||
|
||||
function Scan ({ className, delay = DEFAULT_DELAY, onError = DEFAULT_ERROR, onScan, size, style }: Props): React.ReactElement<Props> {
|
||||
const [containerStyle, setContainerStyle] = useState(createImgSize(size));
|
||||
|
||||
useEffect((): void => {
|
||||
setContainerStyle(createImgSize(size));
|
||||
}, [size]);
|
||||
const containerStyle = useMemo(
|
||||
() => createImgSize(size),
|
||||
[size]
|
||||
);
|
||||
|
||||
const _onError = useCallback(
|
||||
(error: Error) => onError(error),
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util-crypto": "^3.4.1",
|
||||
"@types/react-native": "^0.63.16"
|
||||
"@types/react-native": "^0.63.18"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/keyring": "^3.4.1",
|
||||
"@polkadot/types": "^1.33.0-beta.0",
|
||||
"@polkadot/types": "^1.33.0-beta.5",
|
||||
"@polkadot/util": "^3.4.1",
|
||||
"@types/ledgerhq__hw-transport-node-hid": "^4.22.1",
|
||||
"@types/ledgerhq__hw-transport-webusb": "^4.70.0",
|
||||
@@ -34,7 +34,7 @@
|
||||
"@types/store": "^2.0.2"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@ledgerhq/hw-transport-node-hid": "^5.23.0"
|
||||
"@ledgerhq/hw-transport-node-hid": "^5.23.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/keyring": "*",
|
||||
|
||||
Reference in New Issue
Block a user