ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

React(dispatch与参数传递)

2019-05-30 17:54:04  阅读:3089  来源: 互联网

标签:参数传递 TodoItem onRemove dispatch React ownProps onToggle id


  • 只允许两种形式
onClick={fn};

onClick={()=>{fn()}};
//onClick={()=>{fn(id)}};
  • 不能这么写
onClick={fn(id)};
  • 此外
onClick={()=>{fn()}};

等效于

onClick={fn};
  • 第1种写法(由父组件dispatch,参数不流入TodoItem)

TodoList

 todos.map((item) => ( 
        <TodoItem      
          ......
          onToggle={() => onToggleTodo(item.id)}
          onRemove={() => onRemoveTodo(item.id)}
        />
        ))
......
const mapDispatchToProps = (dispatch) => {
  return {
    onToggleTodo: (id) => {
      dispatch(toggleTodo(id));
    },
    onRemoveTodo: (id) => {
      dispatch(removeTodo(id));
    }
  };
};

TodoItem

<input ... onClick={() => {onToggle()}} />
 <button ... onClick={()=>{onRemove()}}>×</button>
//这么写很蠢

<input ... onClick={onToggle} />
 <button ... onClick={onRemove}>×</button>

<input ... onClick={onToggle} />
 <button ... onClick={onRemove}>×</button>
......
const mapDispatchToProps = (dispatch,ownProps) => {
  return {
   onToggle:()=>{
    ownProps.onToggle();
  },
   onRemove:()=>{
    ownProps.onRemove();
  } 
  };
};
  • 第2种写法(由父组件dispatch,参数流入TodoItem)
    TodoList
 todos.map((item) => ( 
        <TodoItem
          ......
          id={item.id}
          onToggle={onToggleTodo}
          onRemove={onRemoveTodo}
        />
        ))
......
const mapDispatchToProps = (dispatch) => {
  return {
    onToggleTodo: (id) => {
      dispatch(toggleTodo(id));
    },
    onRemoveTodo: (id) => {
      dispatch(removeTodo(id));
    }
  };
};

TodoItem

<input ... onClick={() => {onToggle(id)}} />
 <button ... onClick={()=>{onRemove(id)}}>×</button>

<input ... onClick={onToggle} />
 <button ... onClick={onRemove}>×</button>
.........
const mapDispatchToProps = (dispatch,ownProps) => {
  return {
   onToggle:()=>{
    ownProps.onToggle(ownProps.id);
  },
   onRemove:()=>{
    ownProps.onRemove(ownProps.id);
  } 
  };
};
  • 第3种写法(由子组件dispatch,参数不流入TodoItem)
这是不可能的
  • 第4种写法(由子组件dispatch,参数流入TodoItem)
    TodoList

 

TodoItem

<input ... onClick={onToggle} />
 <button ... onClick={onRemove}>×</button>
......
const mapDispatchToProps = (dispatch,ownProps) => {
  return {
    onToggle: () => {
      dispatch(toggleTodo(ownProps.id));
    },
    onRemove: () => {
      dispatch(removeTodo(ownProps.id));
    }
  };
};



作者:余生筑
链接:https://www.jianshu.com/p/e596191ae7bc
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

标签:参数传递,TodoItem,onRemove,dispatch,React,ownProps,onToggle,id
来源: https://blog.csdn.net/hsany330/article/details/90701192

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有