簡體   English   中英

為什么不能在Motion回調的主體中使用花括號?

[英]Why can't I use curly braces in the body of my Motion callback?

在最簡單的示例中:

import {Motion, spring} from 'react-motion';
// In your render...
<Motion defaultStyle={{x: 0}} style={{x: spring(10)}}>
  {value => <div>{value.x}</div>}
</Motion>

如果我在回調的主體周圍加上花括號 ,這對我有用

import {Motion, spring} from 'react-motion';
// In your render...
<Motion defaultStyle={{x: 0}} style={{x: spring(10)}}>
  { 
     (value) => { <div>{value.x}</div> }
  }
</Motion>

我得到了不變的侵犯。 我是不是誤會了這里發生的事情? 如果我在回調中顯式返回該元素,則不會得到不變的違規,但是動畫不起作用。

Motion組件期望功能是其唯一的子代,這是您在兩個示例中都提供的功能。 Motion將使用更新的x值連續調用(或渲染)此函數,直到動畫完成。

現在由提供的函數返回React可以實際渲染的內容,即您的函數應該返回有效的React元素。

在第一個示例中,您實際上返回的是一個有效元素:

<div>{value.x}</div>

使用JSX時,花括號用於嵌入JS表達式,並且表達式必須解析為值。 但是在第二個示例中,您將返回一個無法解析為任何內容的JS表達式,它只是“包含”一個元素:

{ <div>{value.x}</div> }

從本質上講,這等效於在“常規”渲染方法中執行此操作:

render() {
  return (
    { <div>Content</div> }
  )
}

如果出於某種原因想要將其包裝在花括號中,則必須確保其解析為React可以渲染的內容。 或者,換句話說,您的表達式必須返回有效的React元素,例如:

{value => {return <div>{value.x}</div>}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM