我有一个看起来像这样的React组件
'use strict';
import 'babel-polyfill';
import React from 'react';
import TreeNode from './TreeView';
export default React.createClass({
mapFromApi : function(data) {
const rec = (tree) => tree.reduce((x,y) => {
const newObj = {
"id" : y["@id"],
"name" : y["rdfs:label"]
};
if (y.hasOwnProperty("options")) {
newObj.children = rec(y.options, []);
}
if (y.hasOwnProperty("children")) {
newObj.children = rec(y.children, []);
}
x.push(newObj);
return x;
}, []);
let t = rec(data);
return t;
},
render: function (data) {
let tree1 = this.mapFromApi(this.props.data.properties).map(child => {
return <TreeNode key={child['id']} data={child}/>;
}.bind(this));
return (
<div className='vocab'>
<h4>vocab1</h4>
<div className='accordion'>
{tree1}
</div>
</div>
);
}
});
当我运行此操作时,我在bind关键字
上收到错误SyntaxError: App.jsx: Unexpected token, expected , (56:5)
54 | let tree1 = this.mapFromApi(this.props.data.properties).map(child => {
55 | return <TreeNode key={child['id']} data={child}/>;
> 56 | }.bind(this));
| ^
57 |
58 | return (
59 | <div className='vocab'>
我不确定这是否与我的Babel设置有关,而且我对整个es版本的情况非常困惑。
有人可以帮我解决这个问题吗?非常感谢。
答案 0 :(得分:2)
如果您简化了此代码的布局方式,那么这些语法错误应该更容易识别。
let { data } = this.props;
this
.mapFromApi(data.properties)
.map(child => <TreeNode key={child.id} data={child} />)
箭头功能已经为你.bind(this)
,所以你可以省略它。
答案 1 :(得分:1)
您不应该使用.bind(this),因为您使用的是ES6 arrow
函数=>
,并且会引用正确的this
我会写一些像这样的东西
const {data} = this.props;
let tree1 = this.mapFromApi(data.properties).map(child => {
return <TreeNode key={child['id']} data={child}/>;
});