React解构不同第三方Hook同名publicKey重复声明报错解决
报错原因
你遇到的重复声明报错是对象解构重命名语法使用错误导致的,两种尝试的写法均不符合JS语法规则:
{publicKey as pK}:as是TypeScript的类型断言关键字,仅用于标注变量类型,没有重命名作用,在解构场景下属于非法写法{pK : publicKey}:解构重命名的映射方向写反了,该写法的实际逻辑是「从返回对象中读取pK属性,赋值给名为publicKey的变量」,既无法拿到目标属性,也没有解决重名问题
正确实现方式
JavaScript对象解构的重命名语法规则为:{ 原属性名: 自定义新变量名 },即冒号左侧是Hook返回对象里的原始属性名,右侧是你要声明的、不重名的自定义变量。
建议给两个不同来源的publicKey起语义化的别名,不要用过于模糊的缩写(比如pK),避免后续维护时混淆变量归属。
修正后的可运行代码:
import { useWallet} from "@solana/wallet-adapter-react"; import { useMoralis } from "react-moralis"; export const SendOneLamportToRandomAddress = () => { // 将useWallet返回的publicKey重命名为walletPublicKey const { publicKey: walletPublicKey, sendTransaction } = useWallet(); // 将useMoralis返回的publicKey重命名为moralisPublicKey const { publicKey: moralisPublicKey } = useMoralis(); // 后续业务逻辑直接使用对应别名即可 }
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

