当使用require时,我需要在左括号之前使用引号但是当我使用ns时:require我不必使用引号。那是为什么?
var Box = React.createClass({
getInitialState: function () {
return {data: []};
},
loadStuffFromServer: function() {
$.ajax({
url: this.props.url,
dataType: 'json',
cache: false,
success: function(data) {
this.setState({data: data});
console.log(data);
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
componentDidMount: function() {
this.loadStuffFromServer();
setInterval(this.loadStuffFromServer, this.props.pollInterval);
},
render: function() {
return (
<div>
{ this.state.data.items[0]}
</div>
);
}
});
我知道引用不评估括号前面的表达式,但不完全确定为什么引号在括号前需要,因为它们不是表达式所以不应该评估任何内容。
答案 0 :(得分:5)
您可以require
未在命名空间中绑定的符号 - 向量之前的'
(或者只有'
的示例,例如(require 'clojure.string)
不使用任何选项)可以防止因使用未绑定的符号而导致的错误。
ns
是一个宏,它使用其正文的:require
部分来构建对require
的调用。允许宏决定评估哪个输入与左侧作为文字输入,因此不要将'
与ns
宏一起使用。