首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Next.js react应用程序上添加facebook Pixel?

如何在Next.js react应用程序上添加facebook Pixel?
EN

Stack Overflow用户
提问于 2020-11-12 02:35:13
回答 5查看 10.8K关注 0票数 8

我知道这可能是个愚蠢的问题。如何在next.js react应用程序上使用facebook像素?

EN

回答 5

Stack Overflow用户

发布于 2020-11-28 07:34:19

没有愚蠢的问题。

你可以在下面的例子中了解如何实现fb像素。Nextjs Facebook Pixel

票数 27
EN

Stack Overflow用户

发布于 2021-05-28 05:40:07

使用typescript和与NextJs挂钩的解决方案

  1. Install react-facebook-pixel yarn add react-facebook-pixel
  2. In your file _app.tsx

(为您的文件安装文件

代码语言:javascript
运行
复制
// pages/_app.tsx

import { useEffect } from 'react'
import { useRouter } from 'next/router'

const App = ({ Component, pageProps }) => {
  const router = useRouter()

  useEffect(() => {
    import('react-facebook-pixel')
      .then((x) => x.default)
      .then((ReactPixel) => {
        ReactPixel.init('XXXXXXXXXXXXXXXXXXXXX') // facebookPixelId
        ReactPixel.pageView()

        router.events.on('routeChangeComplete', () => {
          ReactPixel.pageView()
        })
      })
  }, [router.events])

  

  return <Component {...pageProps} />
}

export default App

备注:适用于typescript或JavaScript

票数 8
EN

Stack Overflow用户

发布于 2021-09-18 04:53:43

使用Next.js版本11中发布的新Script组件。将以下内容导入到您的_app.js中。

代码语言:javascript
运行
复制
import { useEffect } from 'react'
import { useRouter } from 'next/router'
import {pageview, FB_PIXEL_ID} from '../../lib/fpixel'
import Script from 'next/script'

const handleRouteChange = () => {
  pageview()
}

const FB_PIXEL_ID = process.env.NEXT_PUBLIC_FACEBOOK_PIXEL_ID

const pageview = () => {
  window.fbq('track', 'PageView')
}

const FacebookPixel = ({ children }) => {
  const router = useRouter()

  useEffect(() => {
    // the below will only fire on route changes (not initial load - that is handled in the script below)
    router.events.on('routeChangeComplete', handleRouteChange)
    return () => {
      router.events.off('routeChangeComplete', handleRouteChange)
    }
  }, [router.events])

  return (
    <Script id="facebook-pixel">
      {`
        !function(f,b,e,v,n,t,s)
        {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
        n.callMethod.apply(n,arguments):n.queue.push(arguments)};
        if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
        n.queue=[];t=b.createElement(e);t.async=!0;
        t.src=v;s=b.getElementsByTagName(e)[0];
        s.parentNode.insertBefore(t,s)}(window, document,'script',
        'https://connect.facebook.net/en_US/fbevents.js');
        fbq('init', ${FB_PIXEL_ID});
        fbq('track', 'PageView');
      `}
    </Script>
  )
}

export default FacebookPixel

更新

请勿使用strategy="lazyOnload"。我之前使用过这种方法,如果使用这种方法,脚本更有可能被广告拦截器阻止。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64792217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档