我尝试用Symbol键创建对象并找到相应的值Symbol.for,但它不起作用:
const sym = Symbol("x");
let obj = {
[sym]: "val"
}
console.log(obj[sym]); // "val"
console.log(obj[Symbol.for("x")]); // undefined, but expected "val"
Run Code Online (Sandbox Code Playgroud)
为什么?
我尝试从Mozilla Hacks(导出列表副标题)重复示例:
//export.js
export {detectCats, Kittydar};
function detectCats() {}
class Kittydar {}
//import.js
import {detectCats, Kittydar} from "./export.js";
console.log(detectCats); // function detectCats() {}
console.log(Kittydar); // undefined
Run Code Online (Sandbox Code Playgroud)
糟糕:Kittydar未定义(顺便说一句,问题与简单相同Object).
但是,如果我export在Kittydar声明之后提出它是好的:
//export.js
class Kittydar {}
export {Kittydar};
//import.js
import {Kittydar} from "./export.js";
console.log(Kittydar); // function Kittydar() {_classCallCheck(this, Kittydar);}
Run Code Online (Sandbox Code Playgroud)
这篇文章中的拼写错误吗?
我把它与之结合起来babel并捆绑在一起browserify.然后我将输出包包含在通常的.html文件中(带<script>标签).
如果没有父组件,我应该如何正确更新组件?
我找到了两种方法:
这里我通过改变组件的状态来更新组件:
var Hello = React.createClass({
render: function() {
if (!this.state) return null;
return (
<div>Hello {this.state.name}</div>
);
}
});
var component = ReactDOM.render(
<Hello />,
document.getElementById('container')
);
component.setState({name: "World"});
setTimeout(function(){
component.setState({name: "StackOverFlow"});
}, 1000);
Run Code Online (Sandbox Code Playgroud)
这里我通过ReactDOM.render方法更新组件:
var Hello = React.createClass({
render: function() {
return (
<div>Hello {this.props.name}</div>
);
}
});
ReactDOM.render(
<Hello name="world"/>,
document.getElementById('container')
);
setTimeout(function(){
ReactDOM.render(
<Hello name="StackOverFlow"/>,
document.getElementById('container')
);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
那么哪种方法是正确的呢?或者也许这是第三种正确的方法?
我知道我可以获得浏览器时区名称: moment.tz.guess()
我怎么能猜出自定义日期的时区?例如moment("2020-12-30T14:17:40+11:00").tz.guess()?