最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你如何實(shí)現(xiàn)在react項(xiàng)目中嵌入Blazor

 更新時(shí)間:2023年01月23日 09:32:51   作者:token  
這篇文章主要介紹了如何實(shí)現(xiàn)在react現(xiàn)有項(xiàng)目中嵌入Blazor,通過這個(gè)案例我們可以知道 blazor也可以像react那樣嵌入在任何的現(xiàn)有項(xiàng)目中,并且使用方便,需要的朋友可以參考下

如何實(shí)現(xiàn)在react現(xiàn)有項(xiàng)目中嵌入Blazor?

目前官方只提供了angular和react倆種示例所以本教程只講react教程

思路講解:

首先在現(xiàn)有react項(xiàng)目中我們可能某些組件是在Blazor中完成,但是我們沒辦法找到怎么在react中輕量級使用blazor組件,可能會有人會使用iframe去加載Blazor項(xiàng)目,但是我不太喜歡這種方式,所以今天問了很多大佬,有大佬說可以直接在react使用Blazor組件的方式,并且找到了文檔和示例(其實(shí)在Blazor文檔中微軟已經(jīng)提到了這個(gè)但是由于在文檔的在下面的示例中可能沒什么人去看 [文檔直通車](ASP.NET Core Razor 組件 | Microsoft Learn))

首先流程

創(chuàng)建react項(xiàng)目

npx create-react-app react-debug
cd react-debug
yarn or npm i

將以下代碼添加到App.js

import React, { useState } from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
    const [nextCounterIndex, setNextCounterIndex] = useState(1);
    const [blazorCounters, setBlazorCounters] = useState([]);
    const addBlazorCounter = () => {
        const index = nextCounterIndex;
        setNextCounterIndex(index + 1);
        setBlazorCounters(blazorCounters.concat([{
            title: `Counter ${index}`,
            incrementAmount: index,
        }]));
    };
    const removeBlazorCounter = () => {
        setBlazorCounters(blazorCounters.slice(0, -1));
    };

    return (
        <div className="App">
            <header className="App-header">
                <img src={logo} className="App-logo" alt="logo" />
                <p>
                    <button onClick={addBlazorCounter}>Add Blazor counter</button> &nbsp;
                    <button onClick={removeBlazorCounter}>Remove Blazor counter</button>
                </p>
    
                {blazorCounters.map(counter =>
                    <div key={counter.title}>
                        <my-blazor-counter title={counter.title} increment-amount={counter.incrementAmount}></my-blazor-counter> // 這里將是渲染razor組件的地方 `my-blazor-counter` 是在razor中定義的,會在下面講到 
                    </div>
                )}
    
            </header>
        </div>
    );
}
export default App;

將以下引用添加到public/index.htmlMicrosoft.AspNetCore.Components.CustomElements/BlazorCustomElements.js是Microsoft.AspNetCore.Components.CustomElements 生成的

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" rel="external nofollow"  />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="theme-color" content="#000000" />
    <meta
      name="description"
      content="Web site created using create-react-app"
    />
    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" rel="external nofollow"  />
    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" rel="external nofollow"  />
    <title>React App</title>
  </head>
  <body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <script src="_content/Microsoft.AspNetCore.Components.CustomElements/BlazorCustomElements.js"></script> 
    <script src="_framework/blazor.webassembly.js"></script>
  </body>
</html>

創(chuàng)建WebAssembly項(xiàng)目

	mkdir webassembly 
	cd webassembly
	dotnet new blazorwasm-empty 

WebAssembly文件夾 并且在文件夾中創(chuàng)建 WebAssembly的空項(xiàng)目
需要確保項(xiàng)目是7.0 因?yàn)槟壳爸恢С?的預(yù)覽和7的正式版
安裝 Microsoft.AspNetCore.Components.CustomElements

<PackageReference="Microsoft.AspNetCore.Components.CustomElements" Version="7.0.2" />

Microsoft.AspNetCore.Components.CustomElements 是提供組件化的主要實(shí)現(xiàn)

修改Program.cs的代碼

using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;

var builder = WebAssemblyHostBuilder.CreateDefault(args);
// BlazorApp.Pages.Index可以修改成自己的渲染的razor組件
// my-blazor-counter就是上面提到的razor對應(yīng)的標(biāo)記 這樣就可以在react通過my-blazor-counter去渲染BlazorApp.Pages.Index組件的內(nèi)容了
builder.RootComponents.RegisterCustomElement<webassembly.Pages.Index>("my-blazor-counter");
builder.RootComponents.Add<HeadOutlet>("head::after");

await builder.Build().RunAsync();

webassembly.Pages.Index組件相關(guān)代碼

<h1>@Title</h1>

<p role="status">Current count: @currentCount</p>
<p>Increment amount: @IncrementAmount</p>

<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>

@code {
    private int currentCount = 0;
    
    [Parameter] public string Title { get; set; } = "Blazor Counter";
    [Parameter] public int? IncrementAmount { get; set; }

    private void IncrementCount()
    {
        currentCount += IncrementAmount.GetValueOrDefault(1);
    }
}

<style>
    button {
        font-weight: bold;
        background-color: #7b31b8;
        color: white;
        border-radius: 4px;
        padding: 4px 12px;
        border: none;
    }

    button:hover {
        background-color: #9654cc;
        cursor: pointer;
    }

    button:active {
        background-color: #b174e4;
    }

</style>

如何查看運(yùn)行效果:

如果需要查看運(yùn)行效果有很多種方式比如通過代碼將Blazor和react的代理到一塊這樣就可以一邊修改一邊預(yù)覽,

但是我現(xiàn)在做最簡單的
先將react build生成

yarn build

將build目錄下面的所有文件拷貝到webassembly\wwwroot下,并且覆蓋index.html

然后執(zhí)行dotnet程序 在webassembly目錄下執(zhí)行

dotnet watch

將會打開瀏覽器 ,效果入下圖,我們可以添加 Add Blazor counter

效果將是這樣,可以點(diǎn)擊Click me將會條件 Current count數(shù)量 點(diǎn)擊Remove Blazor counter將會刪除razor組件

好了效果差不多是這樣字,

通過這個(gè)案例我們可以知道 blazor也可以像react那樣嵌入在任何的現(xiàn)有項(xiàng)目中,并且使用方便,如果是vue的話目前還不知道是否支持 目前官方只提供了angular和react倆種實(shí)現(xiàn),并且支持webassembly和server,當(dāng)前教程是WebAssembly的實(shí)踐,Server會有所差異,

到此這篇關(guān)于教你如何實(shí)現(xiàn)在react現(xiàn)有項(xiàng)目中嵌入Blazor的文章就介紹到這了,更多相關(guān)reactt現(xiàn)有項(xiàng)目嵌入Blazor內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React中的受控組件與非受控組件詳解

    React中的受控組件與非受控組件詳解

    在React中,受控組件指的是表單元素的value值受React組件的state或props控制的組件,而非受控組件則是表單元素的value值由DOM自身負(fù)責(zé)管理的組件,本文將給大家詳細(xì)介紹React受控組件與非受控組件,需要的朋友可以參考下
    2023-08-08
  • react-router-dom簡介(推薦)

    react-router-dom簡介(推薦)

    react-router包含三種類型的組件:路由組件、路由匹配組件?、導(dǎo)航組件,在你使用這些組件的時(shí)候,都必須先從react-router-dom引入,這篇文章主要介紹了react-router-dom簡介,需要的朋友可以參考下
    2022-12-12
  • React-Native實(shí)現(xiàn)ListView組件之上拉刷新實(shí)例(iOS和Android通用)

    React-Native實(shí)現(xiàn)ListView組件之上拉刷新實(shí)例(iOS和Android通用)

    本篇文章主要介紹了React-Native實(shí)現(xiàn)ListView組件之上拉刷新實(shí)例(iOS和Android通用),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • 每天學(xué)習(xí)一個(gè)hooks?useMount

    每天學(xué)習(xí)一個(gè)hooks?useMount

    這篇文章主要為大家介紹了每天學(xué)習(xí)一個(gè)hooks?useMount,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 如何在React中直接使用Redux

    如何在React中直接使用Redux

    這篇文章主要介紹了如何在React中直接使用Redux,目前redux在react中使用是最多的,所以我們需要將之前編寫的redux代碼,融入到react當(dāng)中去,本文給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • React路由攔截模式及withRouter示例詳解

    React路由攔截模式及withRouter示例詳解

    這篇文章主要為大家介紹了React路由攔截模式及withRouter示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 教你react中如何理解usestate、useEffect副作用、useRef標(biāo)識和useContext

    教你react中如何理解usestate、useEffect副作用、useRef標(biāo)識和useContext

    這篇文章主要介紹了react中如何理解usestate、useEffect副作用、useRef標(biāo)識和useContext,其實(shí)與vue中的ref和reactive一樣,通過useState獲取到的數(shù)據(jù)可以實(shí)現(xiàn)組件視圖實(shí)時(shí)交互,而普通定義的數(shù)據(jù)僅僅在業(yè)務(wù)中使用,需要的朋友可以參考下
    2022-11-11
  • React使用Context與router實(shí)現(xiàn)權(quán)限路由詳細(xì)介紹

    React使用Context與router實(shí)現(xiàn)權(quán)限路由詳細(xì)介紹

    這篇文章主要介紹了React使用Context與router實(shí)現(xiàn)權(quán)限路由的詳細(xì)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-01-01
  • 詳解react setState

    詳解react setState

    這篇文章主要介紹了react setState的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用react,感興趣的朋友可以了解下
    2021-04-04
  • React?Hook實(shí)現(xiàn)對話框組件

    React?Hook實(shí)現(xiàn)對話框組件

    這篇文章主要為大家詳細(xì)介紹了React?Hook實(shí)現(xiàn)對話框組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論

额济纳旗| 东港市| 新兴县| 阜城县| 体育| 滦南县| 乳源| 蒙山县| 班玛县| 岳普湖县| 清河县| 黄大仙区| 陆川县| 房产| 梁山县| 香格里拉县| 洛阳市| 镇坪县| 寿阳县| 宿迁市| 丰顺县| 宾川县| 灵寿县| 扬中市| 陕西省| 江油市| 探索| 盖州市| 佳木斯市| 黄梅县| 宣威市| 昌都县| 正宁县| 潜山县| 什邡市| 南江县| 兴业县| 客服| 淳安县| 中山市| 县级市|