使用 opensea-js 通过 Nuxt 构建静态生成的店面。由于钱包提供商似乎最好的选择是 onboard.js 或 Web3modal。
在 Nuxt 中使用“注入”的组件之间共享代码和状态。加载 onboard.js 和 opensea-js 作为客户端插件。
在初始加载时 Onboard 被全局注入。用户选择钱包后,板载订阅会触发回调函数wallet: (wallet) => {...}
,并且在其范围内,当前提供者变为可用。然后我将提供程序传递给 OpenSeaPort 并在全局范围内注入它。但它不起作用,this.$seaport
从其他组件(页面)调用时未定义。
/plugins/onboardopensea.client.js
import { OpenSeaPort, Network } from "opensea-js";
import Onboard from "bnc-onboard";
export default ({ app }, inject) => {
let seaport = {};
const onboard = Onboard({
dappId: "...",
networkId: 1,
subscriptions: {
wallet: (wallet) => {
seaport = new OpenSeaPort(wallet.provider, {
networkName: Network.Main,
apiKey: "...",
});
inject("seaport", seaport);
},
},
walletSelect: {
wallets: ...,
},
)};
inject("onboard", onboard);
}
似乎注入函数在第一次加载时只运行一次,并且在稍后从 Onboard 钱包回调函数调用时运行。