提问者:小点点

如何更新项目以使用最新版本的JavaScript?


我目前正在构建一个新的个人React项目,并希望利用javascript中添加的一些最新特性,比如可选链接。 我曾尝试将此脚本包含在index.html文件中,但没有成功。 在React项目中获得javascript最新稳定构建的秘诀是什么? *编辑:很抱歉,我没有添加足够的信息,但我正在尝试ReactJS中的可选链接特性。 但是,当我运行这个even处理程序时,它会出现以下错误消息:

button.js:18未捕获的TypeError:props.onclick不是函数

这是真的,因为我想看看可选链接是如何工作的,但它显然在这里不工作。

const eventHandler = (e) => {
        console.log(e.target.value);
        // other code
        // onClick is the function that is passed from the parent component
        props?.onClick(e);
    }

共1个答案

匿名用户

老实说,我没有完全理解这个语法,直到我研究它。 我不知道您可以使调用本身是可选的,并认为您只能对属性而不是方法/函数这样做。 但是,你可以! 您只需要调整如何使用可选链接。 将其写成:

possiblyUndefinedObject?.possiblyUndefinedFunction?.()

请参见处理可选回调或事件处理程序

如果使用回调或从具有析构赋值的对象中提取方法,则可能会有不存在的值,除非已测试它们的存在性,否则无法将其作为函数调用。 使用?.,可以避免此额外测试:

另外,一定要在支持它的浏览器中执行此操作(Firefox 68不能工作,但Chrome 84可以)。

null

const foo = {}

// What you have
try {
  foo?.bar();
} catch (err) {
  console.error(err); // TypeError: foo?.bar is not a function
}

// With ?.() but undefined bar
try {
  foo?.bar?.(); // Doesn't get called
} catch (err) {
  console.error(err); // No error
}

foo.bar = () => console.log("bar");

// With ?.() defined bar
try {
  foo?.bar?.(); // "bar"
} catch (err) {
  console.error(err); // No error
}