我对反应很陌生。js和我一直在研究一个组件类(子类),该类具有函数和单个状态对象,我的最终目标是在父类中使用该类,以便它可以调用其函数并更新状态。
我遇到的问题是:
意思:我一直像对待任何C#类而不是JavaScript一样对待这些组件类。我现在知道了。
但我需要帮助评估我的方法并解决我一直看到的这个问题:
这是我的子类组件
从“React”导入React,{Component};从“axios”导入axios;
export default class ClassB extends Component {
constructor() {
super();
console.log("ClassB constructor got called");
this.state = {
users: [{ name: '', email: '' }]
};
}
getUsers() {
let URL = "https://localhost:5001/api/FooController/FooAction"
let myParam = 100;
axios.get(URL,
{
params: { myParam }
})
.then(response => {
// handle logic here...
}).catch(function (error) {
console.log('What happened? ' + error.response.data);
});
}
addUserData(name, email) {
this.setState(this.state, { users: [name, email] });
}
componentDidMount() {
console.log("ClassB componentDidMount got called");
}
render() {
console.log("ClassB render got called");
return ( null )
}
}
在我的父类(Home.js)中,我实例化了子类(ClassB.js)并使用其实例:
import React, { Component } from 'react';
import ClassB from './ClassB'
import ClassC from './ClassC'
const classBComponent = new ClassB();
export class Home extends Component {
static displayName = Home.name;
constructor() {
super();
}
componentDidMount() {
this.timerID = setInterval(() => {
classBComponent.getUserValues();
}, 3000);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
render() {
myComponent.render();
return (
<div className="container">
<h1>My Other Component:</h1>
<div className="row">
<div className="col-sm">
<ClassC name={[{ component: classBComponent, info: ['John', 'john123@123.com'] }]} />
</div>
</div>
</div>
);
}
}
在这个父类中,我打算从ClassB组件中调用“getUserValues()方法。我还有另一个子组件(ClassC),它是一个功能组件,我想传递实例化的ClassB组件,以便它也可以访问其函数和状态。但是,在ClassC组件中,当我调用“addUserData()”方法时,它给出了我在上面粘贴的错误(见图)。
下面是我如何设置ClassC的:
import React, { useEffect } from 'react';
import axios from 'axios';
const ClassC = (props) => {
// variables
let user = props.name[0].info[0];
let email = props.name[0].info[1];
// component
const component = props.name[0].component;
// renders component
function componentMount() {
component.addSimModelNodeInfo(user, email);
}
// leaves the component
function componentUnmount() {
}
useEffect(() => {
componentMount();
return () => {
componentUnmount();
}
}, [])
return (
<div className="card shadow-sm p-3 mb-5 bg-white rounded">
<div className="card-header">
<h5>{name}</h5>
<h5>{email}</h5>
</div>
</div>
);
}
export default ClassC;
我之前提到过,我对组件的生命周期没有很好的把握。我放了那些控制台。登录ClassB只是为了意识到唯一被调用的方法是构造函数。componentDidMount()函数从未被调用,render()也从未被调用。为什么?我知道它与那个错误有关,这就是为什么我的ClassB组件从来没有“挂载”过。我做错了什么?非常感谢。
下面是从子组件调用父组件函数的示例。为了简洁起见,我使用了函数组件,但这在基于类的情况下也是完全可能的。
如果你不熟悉功能组件,你可以考虑像这样的道具。props,函数本身类似于类组件中的render()方法。还有更多内容,但对于这个小例子,如果你需要翻译,它应该会帮助你。
const ChildComponent = (props) => <button onClick={props.onClick} />
const ParentComponent = () => {
const onClick = () => {
console.log("Click Clack");
}
return <ChildComponent onClick={onClick} />;
};
我有java中的类:。和类,它扩展了类。 Class保留Class的实例。 我注意到,当我调用类B的构造函数时(当我在类A中初始化这个参数时),它会执行super(),创建一个新的实例A,并初始化所有It字段。 我如何告诉class
问题内容: 我看到了无数的示例和教程,这些示例和教程展示了如何通过仅设置文件的权限位来创建文件,并且所有这些文件都“作弊”。我想知道/找出如何在创建/更新文件期间正确实例化os.FileMode以提供给编写者。 下面是一个简单的示例: 在上面的基本功能中,权限位0664被设置,尽管这有时可能有意义,但我还是希望有一种正确设置文件模式的正确方法。从上面可以看到,一个常见的示例是UID / GID是已
本文向大家介绍如何在子组件中访问父组件的实例?相关面试题,主要包含被问及如何在子组件中访问父组件的实例?时的应答技巧和注意事项,需要的朋友参考一下 vue中如果父组件想调用子组件的方法,可以在子组件中加上ref,然后通过this.$refs.ref.method调用(https://www.cnblogs.com/jin-zhe/p/9523029.html) Vue中子组件调用父组件的方法,这里
我有一个父组件[MainLayout],它有一个子组件[ListItems],并且有多个子组件[ListItem]。 谢谢你的回答!
如何在Children内部拿到父级的ref? 父级是不同的组件
我正在使用一个简单的Java命令行,需要将log4j插入到我的应用程序中,因此我遵循本教程: http://veerasundar.com/blog/2009/07/log4j-tutorial-adding-log4j-logging-to-your-project/ 因此,我完成了以下步骤: > 我将log4jjar文件放入我的项目库中。 我把log4j放进去了。属性转换为配置包,我使用以下最