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

如何在React[复制]中设置函数参数的状态

陆斌
2023-03-14

我传递的名称和值处理函数从子组件。

现在我想将状态设置为与提供的名称匹配的值。但是我不知道如何设置它。

我尝试了这种方式(但它给出了错误-'this.set状态不是一个函数'):

class ParentComponent extends Component {
constructor(props) {

    super(props);
    this.myRef = React.createRef();
    this.state = {
        loanAmount: 348600.48,
        numberOfYears: 70,
 }
  handleChange(name, value) {  
    this.setState({ name: value },() => {
      this.financeCalcualte();
    });
  }

子组件的代码为:

   onChange = (event) => {   
    const {name, rawValue} = event.target;
    this.props.handleChange(name, rawValue)
   }

设置它的正确语法是什么?

共有3个答案

方恺
2023-03-14

似乎您正在查找计算属性名称

handleChange(name, value) {
    this.setState({ [name]: value },() => {
      this.financeCalcualte();
    });
  }
羊舌源
2023-03-14

如果您在基于类的组件中具有此函数,那么您可以将当前函数更新为如下所示的箭头函数。

handleChange = (name, value) => {  
 this.setState({ name: value },() => {
  this.financeCalcualte();
 });
}

问题是您正在访问这个,而没有给出上下文。

另一种方法是将this绑定到函数。下面是在构造函数中以另一种方式执行此操作的示例。

constructor(props) {
 super(props);

 this.handleChange = this.handleChange.bind(this);
 // Other code ....
}

编辑

正如在其他答案和注释中提到的,您必须使用计算属性名,您不能直接使用变量名并将其设置为另一个变量。

this.set状态({[name]: value})

司马作人
2023-03-14

要在回调函数中使用,如注释中所述,必须将其绑定到构造函数中或使用箭头函数。

另外,由于你的name是一个变量,你不能更新你的状态,比如:

this.setState({ name: value }

因为这会在您的状态中创建一个name属性,所以不会更新将name作为传入变量的状态变量。因此,您应该使用计算属性。

handleChange = (name, value) =>
  this.setState({ [name]: value }, () => this.financeCalcualte());
 类似资料:
  • 我正在调用这个函数。因为它在增加值,但是当我访问它时,它返回以前的值。我想访问同一函数中最新更新的值,我应该做什么。 如何访问同一函数中的最新状态值

  • 我在用历史。在函数内的特定页面中按入React,以便在单击按钮后将其按入特定页面 someFunction(paramToPass){this.props.history.push('/abcfolder/TheFileToReceiveParam',{paramToPass});} 当页面打开时,我想在FileToReceiveParam中获取paramToPass,但我不知道如何执行此操作。

  • 问题内容: 我正在使用 javax.servlet.http.HttpServletRequest 来实现Web应用程序。 我可以使用 getParameter 方法获取请求的参数。但是我不知道如何在请求中设置参数。 问题答案: 您不能,不使用标准API。代表服务器收到的请求,因此添加新参数不是有效的选择(就API而言)。 原则上,您可以实现一个子类,该子类包装原始请求,并拦截方法,并在转发时传递

  • 我们使用复制的Tomcat Web服务器设置与两个节点。我们使用 Ehcache 作为 Web 应用程序的 Hibernate 级别 2 缓存提供程序。因此,我们通过 RMI 复制配置了 Ehcache 设置,如官方文档中所述:http://ehcache.org/documentation/user-guide/rmi-replicated-caching。 我们现在对缓存条目使用timeToL

  • 提前谢了。我有一个状态数组,如下所示。 我需要添加一个项目到状态数组,我发现我们不需要做状态突变。如何使用PrevState设置状态。 如何调用set State以追加此状态数组。 像这样的东西?

  • 问题内容: 在React组件中,最好是在Constructor()或componentWillMount()中设置初始状态? 要么 问题答案: 使用ES6类时,最好在构造函数中使用,但不要使用API,而是这样做: 另外,如果您有可用的类属性(Bab期1),则可以执行以下操作: