reactjs 如何在react js中设置动态Meta标签?

mm5n2pyu  于 5个月前  发布在  React
关注(0)|答案(1)|浏览(59)

我正在做一个网站,我试图从后端动态设置Meta标记,我使用Laravel作为后端和ReactJS作为前端,但它不工作,我已经尝试了 Helm ,但它也不会工作,所以请任何人都可以帮助我。

React.js 18版本不工作水合物

https://react.dev/reference/react-dom/hydrate

** Helm 不工作**

<Helmet>
    <title>{title}</title>
    <meta name="description" content={title} />
    <meta property="og:title" content={title} />
    <meta property="og:description" content={title} />
    <meta property="og:image" content={image} />
</Helmet>

字符串
npm i react-helmet-async库不工作

uttx8gqw

uttx8gqw1#

如果你在react js和API中创建了前端项目,那么你需要在post detail API调用时从服务器获取请求。
你可以设置中间件在特定的API和从Facebook的请求,whastapp,Twitter等.
我在laravel中创建了中间件,并在app/http/kernal.php中注册了中间件。

protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\SocialMediaMiddleware::class,
    ];

字符串
并创建了中间件....

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class SocialMediaMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse)  $next
     * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
     */
    public function handle(Request $request, Closure $next)
    {
        $userAgent = $request->header('User-Agent');
        if (strpos($userAgent, 'facebookexternalhit') !== false) {
            $request->attributes->add(['social_media' => 'facebook']);
        } elseif (strpos($userAgent, 'Twitterbot') !== false) {
            $request->attributes->add(['social_media' => 'twitter']);
        }
        return $next($request);
    }
}


您将从服务器获取此关键字,然后可以设置Meta标签。
因为react js不允许在src/index.html文件中更新或更改并添加Meta标记

相关问题