摘要:理論學習產出就是全局的數據源添加事件處理函數訂閱數據清除事件處理函數任何時候數據發生改變就更新組件函數接受一個組件參數返回另一個新組件注意訂閱數據使用最新的數據渲染組件注意此處將已有的屬性傳遞給原組件
理論學習 + demo產出
class ProductCategoryRow extends React.Component { render() { return (); } } class ProductRow extends React.Component { render() { var name = this.props.product.stocked ? this.props.product.name : {this.props.product.name} ; return ( {this.props.category} ); } } class ProductTable extends React.Component { render() { var rows = []; var lastCategory = null; console.log(this.props.inStockOnly) this.props.products.forEach((product) => { if (product.name.indexOf(this.props.filterText) === -1 || (!product.stocked && this.props.inStockOnly)) { return; } if (product.category !== lastCategory) { rows.push( {name} {this.props.product.price} ); } rows.push( ); lastCategory = product.category; }); return (
Name | Price |
---|
class CommentList extends React.Component { constructor() { super(); this.handleChange = this.handleChange.bind(this); this.state = { // "DataSource" 就是全局的數據源 comments: DataSource.getComments() }; } componentDidMount() { // 添加事件處理函數訂閱數據 DataSource.addChangeListener(this.handleChange); } componentWillUnmount() { // 清除事件處理函數 DataSource.removeChangeListener(this.handleChange); } handleChange() { // 任何時候數據發生改變就更新組件 this.setState({ comments: DataSource.getComments() }); } render() { return ({this.state.comments.map((comment) => (); } } class BlogPost extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.state = { blogPost: DataSource.getBlogPost(props.id) }; } componentDidMount() { DataSource.addChangeListener(this.handleChange); } componentWillUnmount() { DataSource.removeChangeListener(this.handleChange); } handleChange() { this.setState({ blogPost: DataSource.getBlogPost(this.props.id) }); } render() { return))} ; } } const CommentListWithSubscription = withSubscription( CommentList, (DataSource) => DataSource.getComments() ); const BlogPostWithSubscription = withSubscription( BlogPost, (DataSource, props) => DataSource.getBlogPost(props.id) ); // 函數接受一個組件參數…… function withSubscription(WrappedComponent, selectData) { // ……返回另一個新組件…… return class extends React.Component { constructor(props) { super(props); this.handleChange = this.handleChange.bind(this); this.state = { data: selectData(DataSource, props) }; } componentDidMount() { // ……注意訂閱數據…… DataSource.addChangeListener(this.handleChange); } componentWillUnmount() { DataSource.removeChangeListener(this.handleChange); } handleChange() { this.setState({ data: selectData(DataSource, this.props) }); } render() { // ……使用最新的數據渲染組件 // 注意此處將已有的props屬性傳遞給原組件 return ; } }; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/94793.html
摘要:入門學習筆記整理一搭建環境入門學習筆記整理二簡介與語法入門學習筆記整理三組件入門學習筆記整理四事件入門學習筆記整理五入門學習筆記整理六組件通信入門學習筆記整理七生命周期入門學習筆記整理八入門學習筆記整理九路由React 入門學習筆記整理(一)——搭建環境 React 入門學習筆記整理(二)—— JSX簡介與語法 React 入門學習筆記整理(三)—— 組件 React 入門學習筆記整理(...
摘要:選擇的主要原因大概是因為該框架出現較早,感覺上會相對成熟,日后學習中遇到問題想要查找答案相對簡單一些,對,就是這么簡單。多說無益,接下來開始的學習,我按照我學習中帶著的問題來一一解答,完成我的入門筆記。主要是針對前端的組件化開發。 這兩天得空,特意來折騰了以下時下火熱的前端框架react,至于為什么選react,作為一個初學者react和vue在技術上的優劣我無權評論,也就不妄加評論了...
摘要:新搭建的個人博客,本文地址學習筆記用重寫在一開始的時候配置中我們就加入了的支持,就是下面的配置,但之前的學習筆記都使用的完成,所以專門作一篇筆記,記錄使用完成創建相關文件修改,增加該入口文件修改,引入該文件做個簡單的測試,看下瀏覽器全部用來 新搭建的個人博客,本文地址:React學習筆記3:用es2015(ES6)重寫CommentBox在一開始的時候webpack配置中我們就加入了e...
摘要:官方說法注本人英語二十六級是和用來創建用戶界面的庫。很多人將認為是中的。怎么說呢現在的自己就是個跟風狗啊,什么流行先學習了再說,再看看能不能應用在具體項目上。暫時先停下的學習,坐等。不過學習的腳步還是跟不上潮流的發展速度啊。 Why React? 官方說法 注:本人英語二十六級 React是Facebook和Instagram用來創建用戶界面的JavaScript庫。很多...
摘要:前言以深入學習技術棧為線索,記錄下學習的重要知識內容。要傳入時,必須使用屬性表達式。如果要使用自定義屬性,要使用前綴這與標準是一致的。 前言 以《深入學習react技術棧》為線索,記錄下學習React的重要知識內容。本系列文章沒有涵蓋全部的react知識內容,只是記錄下了學習之路上的重要知識點,一方面是自己的總結,同時拿出來和在學習react的人們一塊分享,共同進步。 正文 一:rea...
摘要:新搭建的個人博客,本文地址學習筆記環境搭建本文的書寫環境為,之后會補充下的差異創建學習目錄初始化項目根據相關提示完善信息,入口文件安裝相關包,并且使用也就是支持,需要包,因為我之前做個一些相關項目,所以部分包已經全局安裝,比如等等,大家 新搭建的個人博客,本文地址:React學習筆記1:環境搭建 本文的書寫環境為mac,之后會補充windows下的差異 1、創建學習目錄 mkdir l...
閱讀 1425·2021-09-23 11:21
閱讀 3123·2019-08-30 14:14
閱讀 3205·2019-08-30 13:56
閱讀 4158·2019-08-30 11:20
閱讀 1963·2019-08-29 17:23
閱讀 2780·2019-08-29 16:14
閱讀 1709·2019-08-28 18:18
閱讀 1501·2019-08-26 12:14