首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从ChildComponent中的另一个ChildComponent访问.NET中的函数

如何从ChildComponent中的另一个ChildComponent访问.NET中的函数
EN

Stack Overflow用户
提问于 2020-01-16 14:32:18
回答 1查看 61关注 0票数 0

我已经通过谷歌找到了解决方案,当你可以达到的功能/价值,从孩子到家长,反过来,但不是从孩子到孩子。

父组件,子组件的容器

代码语言:javascript
复制
 //PARENT 
<h3>ParentComponent</h3>
<Child_1_Component></Child_1_Component>

<Child_2_Component></Child_2_Component>

<h3>Child_1_Component</h3>

子用户输入了一些东西

代码语言:javascript
复制
//CHILD 1
<h1>User puts in something</h1>
<input type="text"/>
<button @onclick="@(() => getValue(10))"></button>

@code {
    List<WhatEver> whatEvers = new List<WhatEver>();

    public void getValue(int value)
    {
        var message = "something";
        for (int i = 0; i < value; i++)
        {
            var whatever = new WhatEver();
            whatever.Name = message;
            whatEvers.Add(whatever);
        }
        //Sends value to Service
    }
}

子2通过服务显示用户在子1中所放的内容,并给出用户更改值的可能性。

在这里,我希望能够达到子1的功能。

代码语言:javascript
复制
<h3>Child_2_Component</h3>
<h1>Displays Value from service and lets user put in new value</h1>
<input type="text" />
<button @onclick="@(() => getValue(10))"></button>

@*Here I want to use the funcction getValue(x) in Child_1_Component*@
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-16 15:48:17

定义一个Worker类并将getValue(int值)放入其中。

代码语言:javascript
复制
public class Worker{
    public object getValue(int value){
       //[...]
       return something;
    }
}

然后有两种可能性:

解决方案1

在两个子项的父项中创建一个Worker实例,并将其放在两个子项中。

代码语言:javascript
复制
//PARENT 
<h3>ParentComponent</h3>
<Child_1_Component Worker="@MyWorker"></Child_1_Component>
<Child_2_Component Worker="@MyWorker"></Child_2_Component>

<h3>Child_1_Component</h3>

@code {
    private Worker MyWorker{ get; set; }

    protected override void OnInitialized()
    {
       MyWorker = new Worker();   
    }
}

然后是“孩子”,在这两个孩子中,工人是同一个对象:

代码语言:javascript
复制
//CHILD 1
<h1>User puts in something</h1>
<input type="text"/>
<button @onclick="@(() => Worker.getValue(10))"></button>

@code {
    [Parameter]
    public Worker Worker { get; set; }        
}

解决方案2:

您可以将getValue(int值)移动到服务中,并在Startup.cs中定义它,然后两个子程序都具有相同的实例。

代码语言:javascript
复制
 //Startup.cs
 public void ConfigureServices(IServiceCollection services)
 {
    [...]
    services.AddScoped<Worker>();
 }

然后是孩子,那里的工人在这两个方面都是相同的对象:

代码语言:javascript
复制
//CHILD 1
@inject Worker MyWorker
<h1>User puts in something</h1>
<input type="text"/>
<button @onclick="@(() => MyWorker.getValue(10))"></button>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59771852

复制
相关文章

相似问题

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