Javascript 反应组件状态的默认功能参数值

Javascript 反应组件状态的默认功能参数值,javascript,reactjs,function,default-parameters,Javascript,Reactjs,Function,Default Parameters,今天我为我的同事做了一个回顾,我发现了一个令我感兴趣的函数定义。如果函数调用未提供参数,则他在react组件内使用默认参数值实现了一个函数。他使用状态值作为默认参数 它看起来像这样的例子: class CustomComponent extends React.Component { constructor(props) { this.state = { loadedData = [], // array of objects

今天我为我的同事做了一个回顾,我发现了一个令我感兴趣的函数定义。如果函数调用未提供参数,则他在react组件内使用默认参数值实现了一个函数。他使用
状态
值作为默认参数

它看起来像这样的例子:

class CustomComponent extends React.Component {
    constructor(props) {
         this.state = {
             loadedData = [], // array of objects
         };

         this.filterDates = (fromUtc, toUtc, loadedData = this.state.loadedData) {
             // do something with 'loadedData' based on time range 'fromUtc' and 'toUtc'
         }
    }
}
他不能给我一个很好的解释。只是它在他的实现中起了作用

我一直使用“静态”默认参数值(如
[]
、数字等) 我很好奇是否可以使用某种“动态”默认参数,当
state
改变时,该参数会改变

这样写可以吗?可能有问题吗?

根据这种方法是好的。然而,我质疑将默认值分配给状态,该状态根据定义是可变的,除非它达到预期效果。默认参数不应该是可变的。就我个人而言,我第一次看到这种方法,我认为这不是直观的,但可能只是我的经验

在我看来,下面的代码更干净、更容易理解,而且错误更少:

类CustomComponent扩展了React.Component{
建造师(道具){
此.state={
loadedData=[],//对象数组
};
this.filterDates=(fromUtc、toUtc、loadedData=[])=>{
//根据时间范围“fromUtc”和“toUtc”使用“loadedData”执行操作
}
}
}

在构造函数中,this.state是一个简单的对象,没有任何神奇的状态特征。因此,
loadedData=this.state.loadedData
loadedData=[]
相同,但第二个更可读。

应该可以吧?但是为什么参数首先是可选的呢?如果您可以传递
this.state.loadedData
,那么逻辑在哪里呢?在我的POV中,这是不好的。默认值应该是静态值,如果有动态值,它将基于业务逻辑,并且应该是主体的一部分instead@dennis-我不知道我是否理解你的问题。传递
this.state.loadedData
的逻辑在组件本身内部,但功能不同。一旦他从
state
调用
filterDates(fromUtc,toUtc)
(不带第三个参数)中筛选数组,第二次调用时使用不同的数组引用,该数组引用遵循
this.state.loadedData
格式。(函数参数被称为
loadedData
,这可能会让人困惑)