【问题标题】:reactjs, const, passing propertiesreactjs, const, 传递属性
【发布时间】:2017-05-12 06:21:29
【问题描述】:

我刚开始做出反应并接手一项紧急工作。我有一个在索引页面上调用的组件,我正在尝试将一个对象属性推入其中。


所以这里有两种方法可以做到这一点

const TestBundle = ({lang}) => (
  <section className='relative-container'>
    <div className='row'>
        {lang}
    </div>
  </section>
)

TestBundle .propTypes = {
  lang: React.PropTypes.object.isRequired
}

^ 这行得通.. 但是我如何让下一个概念正常工作 - 当我尝试这个解决方案时,我遇到了各种各样的错误。

const TestBundle = (props) => {
    const lang = props.lang

      <section className='relative-container'>
        <div className='row'>
            {lang}
        </div>
      </section>
}

//不同的例子

const TestBundle = (props) => {
    const lang = props.lang

      <section className='relative-container'>
        <div className='row'>
            {lang}
        </div>
      </section>
}

export default TestBundle

--但这会出现错误

./src/components/Services/TestBundle.js
Module build failed: SyntaxError: D:/wamp/www/project/react/src/components/Services/TestBundle.js: Unexpected token (5:2)

  3 | 
  4 | const TestBundle= (props) => {
> 5 |   const lang = props.lang
    |   ^
  6 |   
  7 |   <section className='relative-container'>
  8 |     

【问题讨论】:

  • 你不能把 JSX 放在一个块的中间!
  • return &lt;section ....;
  • 请用一些答案示范。 @Felix Kling - 你只是建议在部分顶部打一个回报?
  • 是的。该函数需要返回一些东西。
  • 是的,正在检查语法-现在这两种方法有什么区别-最好使用哪种方法-为什么一种方法可以-另一种方法需要返回-您说JSX - 这个指标是什么。

标签: javascript reactjs


【解决方案1】:

简单的修复;你需要为你的 JSX 添加一个 return 语句。就目前而言,您没有返回任何内容,而是将 JSX 与常量定义混合在一起:

const TestBundle = (props) => {
  const lang = props.lang;
  return (
    <section className='relative-container'>
      <div className='row'>
        {lang}
      </div>
    </section>
  );
}

或者,如果您喜欢更短的语法:

const TestBundle = (props) => <section className='relative-container'>
    <div className='row'>
      {props.lang}
    </div>
  </section>

【讨论】:

  • 现在这两种方法有什么区别-最好使用哪种方法-为什么一种方法可以-另一种方法需要返回-您说的是JSX-这是什么指标
  • @TheOldCounty,你是什么意思?一个在语法上更短,因为我没有先声明一个常量然后使用它,而是直接使用该值。即第一个就像做x=y+1 然后使用x 而最后一个是直接使用y+1。这只是一个偏好问题。如果一个功能组件只返回并且不做任何逻辑,那么你可以省略return。否则你必须像第一个例子那样做。至于JSX是什么,请看here
  • 我回到了我的问题——“const TestBundle = ({lang}) => (" and "const TestBundle = (props) => {"
  • @TheOldCounty 这就是所谓的“解构”。阅读更多关于它的信息here
  • 我还有另一个问题..关于减速器和语言切换
猜你喜欢
  • 2021-07-01
  • 2016-07-10
  • 1970-01-01
  • 2022-01-02
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
  • 2023-01-08
  • 2019-04-02
相关资源
最近更新 更多