当前位置: 首页 > 知识库问答 >
问题:

ReactJS: setState从外部[重复]

周伟泽
2023-03-14

这是我的pp.js

import React from 'react';
import './App.css'
import Tools from './components/class/Tools'
import Loading from './components/inc/Loading'

export default class App extends React.Component {
    componentDidMount() {
        Tools.showLoading();
    }

    render() {  
        return (
            <div className="App">
                <Loading />
            </div>
        )
    }
}

loading.js:

import React from 'react'

export default class Loading extends React.Component {
    constructor(props) {
        super(props)

        this.state = {
            display: 'none'
        }
    }

    render() {
        return (
            <div className="loading" style={{display: this.state.display}}>
                <span></span>
            </div>
        )
    }
}

我想从Tools.js中更改加载显示

export default class Tools extends React.Component {
    static showLoading(){ // or non-static
        Loading.setState ...
    }
}

如何从另一个类或函数或外部访问和设置State变量?

共有1个答案

阎建德
2023-03-14

您的加载和工具组件是兄弟姐妹,因此很难在它们之间传递数据。

您应该将状态拉出到父App组件,然后您可以将setState回调方法和state.loading变量传递到工具加载作为道具的组件。

或者,您可以在所有其他组件中重复使用加载组件,如下所示:

export default class Tool extends React.Component {

 constructor(props) {
        super(props)

        this.state = {
            loading: true
        }
    }

    render() {
        return (
            <Loading isloading={loading}>
            <div>
            // content here
            </div>
        )
    }
}

 类似资料:
  • 尽管有几个其他的解决方案,我还没有找到一个真正解决我的问题。我有一个HTML文件,其中包含一个带有 在身体里有一个按钮,像这样: 并且我有Javascript函数basicAlert(): 我已经花了两天时间在这个问题上了,但是我不能让onclick函数在外部文件中执行basicAlert()。我可以在持有函数的HTML中有一个脚本,它将完美无瑕地运行,但当函数在外部文件中时,它就不运行了。尝试的

  • 有什么建议吗?它不工作在模拟器或当我在我的手机上运行它。

  • 请查看这段编译良好的代码:

  • 问题内容: 看到: 问题在于,警报的item.id始终是数组中最后一个项目的ID(this.items)。怎么解决? 问题答案: 这里的问题是变量随每个循环而变化。在以后参考时,将使用其保留的最后一个值。您可以使用一种称为闭包的技术(本质上是一个返回函数的函数)来快速确定变量的范围。 旁注我看到您在这里有jQuery。它具有可以与数组一起使用的辅助函数,并且可以作为简单的for/each循环的快捷

  • 问题内容: 在下面显示的代码片段中,内部类本身继承了外部类。 方法中的唯一语句(最后一个片段)将值分配给类的私有字段,然后调用该方法。 该方法会导致另一个字符串- 要设置的私人领域中的类调用之前的方法延长。 因此,方法中的以下两个语句: 应该显示 另一个价值 另一个价值 但是他们显示 初始值 初始值 为什么会这样? 问题答案: 方法和领域都是。因此,其他子类(包括子类)均无法访问它们。它们不是继承

  • 基本上,我的项目是一场战争(MyProject),导入2罐,MyProject-Client和MyProjectJar-API 我的项目 MyProjectJar-API - 有一个接口 MyProject-Client -想要注入在MyProject上生成的ParametroService 我想知道是否可以将ParameterService(在MyProject上生成)注入MyProject客户