2017-09-16 98 views
0

我是React的新手,但不是JS。 這裏有一段代碼,我無法理解React屬性/函數賦值/聲明

// @flow 

import React, { Component } from 'react'; 
import ShowCard from './ShowCard'; 
import Header from './Header'; 

class Search extends Component { 
    state = { 
    searchTerm: '' 
    }; 
    props: { 
    shows: Array<Show> 
    }; 
    handleSearchTermChange = (event: SyntheticKeyboardEvent & {target: HTMLInputElement}) => { 
    this.setState({ searchTerm: event.target.value }); 
    }; 
    render() { 
    return (
     <div className="search"></div> 
    ); 
    } 
} 

export default Search; 

在類中有像state = ...props: {..表達式。 功能定義如render(){}handleSearchTermChange = (...。 正如我從所有這些有效的ES6記得一個是render。它是如何工作的?如果我切換數據分配到state/props的方式 - 一切都會剎車。我認爲這是某種babel插件,是嗎?

+0

這是JavaScript與[** Flow **](https://flow.org/)。 [** This **](https://pastebin.com/bKTq5TXQ)在JavaScript中是等效的,沒有[** PropTypes **](https://facebook.github.io/react/docs/typechecking -with-proptypes.html)。 – Tholle

回答

0

是的,你是對的。

反應文檔通常通過constructor() {}對象定義狀態。但是,在某些項目中,我們可以通過state = {}來完成。由於Babel transpiler稱爲Class properties transform,這種簡寫語法是可能的。