多个变量与一个对象之间的差异

时间:2020-07-05 04:12:59

标签: javascript reactjs typescript performance mobx-react

我是编程和reactjs的新手。我试图寻找这个,但没有找到太多关于这个的好的概念。

我想知道两种方法之间的区别是:声明具有3个属性的对象或声明3个变量。

哪个是更好的性能和资源明智的选择?他们会占用相同的内存量吗?

@observable response = {
    foo: null,
    bar: null,
    baz: null
}

@observable foo = null;
@observable bar = null;
@observable baz = null;

const [response, setResponse] = React.useState({foo: null, bar: null, baz: null});

const [foo, setFoo] = React.useState(null);
const [bar, setBar] = React.useState(null);
const [baz, setBaz] = React.useState(null);

1 个答案:

答案 0 :(得分:0)

我认为我们在性能和资源上也没有什么不同。

我唯一关心的是您使用这些变量的方式。

例如,仅一个变量发生变化的情况。如果使用对象,则应在setResponse({ ...response foo: newFooValue })

中执行以下操作
setFoo(newFooValue)

如果使用三个不同的变量,则只需执行以下操作即可,不必担心其他变量

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class NumWords implements Rule
{
    private $attribute;
    private $expected;
    
    public function __construct(int $expected)
    {
        $this->expected = $expected;
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        $this->attribute = $attribute;
        $trimmed = trim($value);
        $numWords = count(explode(' ', $trimmed));
        return $numWords === $this->expected;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The '.$this->attribute.' field must have exactly '.$this->expected.'  words';
    }
}

仅此而已!

相关问题