我是ES6和Redux的新手。我在看一些代碼並試圖理解這個新的ES6語法中發生了什麼。ES6 React Redux語法澄清
我覺得這可能很簡單,但我不理解它,它可能會幫助與我處於類似位置的其他人。
我想知道下面的代碼是如何創建一個react元素。我熟悉React.createClass方法,但似乎沒有在這裏陳述或至少不明確。我可以看到React已導入,但未在代碼的其餘部分提及。那麼FileTable
如何變成反應組件?
我可以看到const變量FileTable
似乎包含通常會在React.createClass的render方法中進行的操作,但是如果是這種情況,那麼像componentDidMount,componentDidUpdate等方法會在哪裏定義?
任何幫助是極大的讚賞。
import React, { PropTypes } from 'react';
import { connect } from 'react-redux';
import * as actions from '../actions';
const FileTable = ({ fileList, getFileList}) => {
return (
<ul className="filterable-table">
{fileList.map((file)=><li>{file.fileName}</li>)}
</ul>
);
};
FileTable.propTypes = {
fileList: PropTypes.array,
};
const mapStateToProps = (state) => {
return {
fileList: state.fileList
};
};
const mapDispatchToProps = (dispatch) => {
return {
getFileList:() => dispatch(actions.getFileList())
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(FileTable);
編譯器,它可能是babel/webpack/browserify,它有一個插件,它以某種方式將JSX轉換爲javascript。如果對babel使用react-jsx轉換,那麼可以假設JSX可以轉換爲React,並且這個無狀態函數會變成「React .createElement'。 – CallMeNorm
這有助於很多!但如果是這種情況,如果我要創建一個React組件,我可以用const newComponent = React.createClass({render: ,componentDidMou NT:...})。並在結束連接(mapStateToProps,mapDispatchToProps)(newComponent)和結果將是newComponent將連接到商店? – X0r0N
實際上,react在一個擴展了React.Component的類中包裝了一個無狀態函數,並且調用了它的render方法。 Connect是一個擴展了React.Component的組件,它也調用了它在其渲染方法中包裝的組件,是一個無狀態的函數。無論你如何包裝它,無狀態函數都不會有生命週期方法。 –