Skip to content

Framework Adapters

Unified guide

If you are comparing NMPv3 and NMPv3+ across HTML, PHP, React, Vue3, Nuxt, Astro, and Svelte, start with Framework Integration. This page focuses on NMPv3+ adapters.

NMPv3+ adapters do not replace the player. They turn framework-friendly options into custom-element attributes, event names, and client loading plans.

React

tsx
import "netease-mini-player-v3/auto";
import { createNMPv3PlusReactProps } from "netease-mini-player-v3-plus/react";

export function NMPv3PlusPlayer() {
  return (
    <nmp-player
      {...createNMPv3PlusReactProps({
        playlistId: "14273792576",
        skin: "glass",
        layout: "compact",
        plusLayout: "cover",
        plusExtensions: ["advanced-layouts", "visualizer", "host-sync"],
        lyricsUrl: "/lyrics/song.lrc",
        translationLyricsUrl: "/lyrics/song.zh.lrc",
        hostSync: true,
        onNMPv3SongChange: (event) => {
          console.log("Song changed", event);
        },
      })}
    />
  );
}

The React adapter binds onNMPv3Ready, onNMPv3Play, onNMPv3Pause, onNMPv3SongChange, and onNMPv3Error to real custom events and removes them when the ref unmounts.

Vue

vue
<script setup lang="ts">
import "netease-mini-player-v3/auto";
import { createNMPv3PlusVueBinding } from "netease-mini-player-v3-plus/vue";

const player = createNMPv3PlusVueBinding({
  playlistId: "14273792576",
  skin: "glass",
  layout: "compact",
  plusExtensions: ["visualizer", "host-sync"],
  hostSync: true,
  pageLinking: true,
});
</script>

<template>
  <nmp-player v-bind="player.attrs" />
</template>

Next

tsx
"use client";

import "netease-mini-player-v3/auto";
import { createNMPv3PlusNextClientPlan } from "netease-mini-player-v3-plus/next";

const plan = createNMPv3PlusNextClientPlan({
  playlistId: "14273792576",
  sourceType: "local-json",
  source: "/music/playlist.json",
  skin: "glass",
  plusLayout: "cover",
  plusExtensions: ["advanced-layouts", "custom-source", "local-lyrics"],
  lyricsUrl: "/lyrics/song.lrc",
  lyric: true,
});

export function NMPv3PlusPlayer() {
  return <nmp-player {...plan.element.attrs} />;
}

Adapter entries

FrameworkEntry
Reactnetease-mini-player-v3-plus/react
Vuenetease-mini-player-v3-plus/vue
Nextnetease-mini-player-v3-plus/next
Nuxtnetease-mini-player-v3-plus/nuxt
Astronetease-mini-player-v3-plus/astro
Sveltenetease-mini-player-v3-plus/svelte