看到一处 react 属性状态赋值的写法,有一处中括号的用法如下:
class Form extends React.Component { setField(key) { return (e)=>{ this.setState({ [key]: e.target.value //此处的中括号引起了我的注意~~ }); } } render() { // ...... } }
本来以为此处是以一个数组作为 key 值。实际情况是,此处只是为了避免出现编译语法将 key 认为是 "key"字符串而采用的处理。
类似于强制编译器将此处进行 eval处理。
因为这种语法
const obj = {key: 123}; //此处的 key 即是字符串 "key"
// 又比如
const key = "iamkey";
obj[[[key]]] = "value";//最终编译出来即是 obj = {"key": "value",....}