这篇文章主要介绍“React报错Expected an assignment or function call and instead saw an expression怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React报错Expected an assignment or function call and instead saw an expression怎么解决”文章能帮助大家解决问题。
当我们忘记从函数中返回值时,会产生"Expected an assignment or function call and instead saw an expression"错误。为了解决该错误,确保显式地使用return
语句或使用箭头函数隐式返回。
下面有两个示例来展示错误是如何产生的。
// App.js
const App = props => {
const result = ['a', 'b', 'c'].map(el => {
// ⛔️ Expected an assignment or function call and instead saw an expression. eslint no-unused-expressions
el + '100';
});
return <div>hello world</div>;
};
const mapStateToProps = (state) => {
// ⛔️ Expected an assignment or function call and instead saw an expression. eslint no-unused-expressions
todos: ['walk the dog', 'buy groceries']
}
export default App;
在App
组件中,错误是在Array.map()
方法中引起的。这里的问题在于,我们没有从传递给map()
方法的回调函数中返回任意值。
在JavaScript函数中,如果我们没有显式地使用return
语句,或者使用箭头函数隐式地返回一个值,则返回undefined
。
mapStateToProps
函数中的问题是一样的,我们忘记从函数中返回值。
为了解决该错误,我们必须显式地使用return
语句或使用箭头函数隐式返回值。
下面是一个例子,用来说明如何使用显式return
来解决这个错误。
const App = props => {
const result = ['a', 'b', 'c'].map(el => {
return el + '100'; // ????️ using explicit return
});
console.log(result);
return <div>hello world</div>;
};
const mapStateToProps = state => {
return {todos: ['walk the dog', 'buy groceries']}; // ????️ using explicit return
};
export default App;
我们通过在map()
方法中显式返回来解决问题。这是必须的,因为Array.map
方法返回一个数组,其中包含我们传递给它的回调函数所返回的所有值。
需要注意的是,当你从一个嵌套函数中返回时,你并没有同时从外层函数中返回。
另一种方法是使用箭头函数的隐式返回。
// ????️ implicit return
const App = props => (
<div>
<h3>hello</h3>
<h3>world</h3>
{['a', 'b', 'c'].map(element => (
<div key={element}>{element}</div>
))}
</div>
);
// ????️ implicit return
const result = ['a', 'b', 'c'].map(element => element + '100');
console.log(result); // ????️ ['a100', 'b100', 'c100']
// ????️ implicit return
const mapStateToProps = state => ({
todos: ['walk the dog', 'buy groceries'],
});
export default App;
我们为App
组件使用了隐式地箭头函数返回。
需要注意的是,我们根本没有使用大括号。简短的隐式返回使用圆括号。
如果我们使用隐式返回来返回一个对象,我们必须用圆括号来包裹这个对象。
// ✅ RIGHT
const mapStateToProps = state => ({
todos: ['walk the dog', 'buy groceries'],
});
// ⛔️ WRONG
const msp = state => {
// ⛔️ Expected an assignment or function call and instead saw an expression.eslint no-unused-expressions
todos: ['walk the dog', 'buy groceries']
};
一个简单的思考方式是--当你使用大括号而没有用圆括号包裹它们时,你是在声明一个代码块(比如if
语句)。
{
console.log('this is my block of code');
}
当不使用圆括号时,你有一个代码块,而不是一个对象。
但当你用圆括号包裹住大括号时,你就有一个隐式的箭头函数返回。
如果你认为eslint
规则不应该在你的方案中造成错误,你可以通过使用注释来关闭某一行的eslint
规则。
// eslint-disable-next-line no-unused-expressions
注释应该放在造成错误的那一行的正上方。
关于“React报错Expected an assignment or function call and instead saw an expression怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。