javascript - 我可以将函数指定为 this.state 中的属性吗?

标签 javascript reactjs function react-redux this

我尝试使用 this.handleFormula 函数呈现 div 中字符串的最后一个值。我将此函数分配给 this.state 中的公式,并将 this.state.formula 链接到 div。我试图 console.log 返回值,但仍然没有渲染任何内容,您知道可能是什么问题吗?

这是我的代码笔:https://codepen.io/tonytony92/pen/bGdmbzx?editors=1111

    this.state={
      display:"0",
      formula:this.handleFormula,
      buttonState:[{key: 'AC',
        col:'red',
        key1:"AC"
        },///and a bunch of other objects in array/// ]  }

handleFormula(){
    let str=this.state.display
    console.log(str)
    let newArr=str.match(/["/"+"x"-]/gi)
    let newStr=""
    if (Boolean(newArr)==false){//If no special characters are found in string ,return current display//
      console.log(str)
      return str
    }
    else{
       for(let i=newArr.length-1;i>-1;i--){// if last value is a number concatenate it to a variable///
        if(parseFloat(newArr[i])!==NaN){
             newStr+=newArr[i]
           } 
         else if(i===newArr.length-1&& parseFloat(newArr[i])===NaN){ // if last value is a specialChar return it///
           return newArr[i]
         }
         else{  /// return numbers concatenated in variable///
           return newStr
         }

       }

    }

  }

最佳答案

React 不渲染函数,就像它不渲染 bool 值一样。

如果您想渲染函数声明(这没有多大意义),请使用 {this.state.formula.toString() 而不是 {this.state.formula} } 在你的 div 中。

但是,由于您希望渲染 handleFormula 的返回值,因此如果 handleFormula 设置某些状态并且只渲染该状态会更好的状态。

为什么这样更好?因为设置新状态会导致重新渲染,并且您将始终在 UI 中看到新状态。 this.state.formula 的渲染返回值将始终相同,您可能会将其视为一个错误。

注意将函数附加到状态是不常见的,但它不应该引起任何类型的问题。我看到人们出于性能原因在 Context 提供程序中这样做: value={this.state} 他们将方法附加到状态。

关于javascript - 我可以将函数指定为 this.state 中的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60910055/

相关文章:

Javascript:函数的 "Infinite"参数?

javascript - 在 Promises 中使用循环的正确方法

javascript - 音量 slider 在单击时正确播放音频文件,但未更改同一元素的按键音量

javascript - 在 DOM 完成之前渲染调用 - meteor blaze

javascript - 嵌套的 redux reducer

node.js - 将 JSON 对象从 Express 服务器发送到 React 时 undefined object ?

c - 为什么我不能在 C 中返回递归函数的最后一个值?

c - 如何将二维数组发送到函数?

javascript - Highcharts 工具提示系列名称前面的奇怪字符

javascript - 监控用户 session 以防止编辑冲突