案例:郵件發(fā)送-收件人選擇

Mail.js

SendList.js

FriendList

#?案例:郵件發(fā)送-收件人選擇

仿?QQ?郵箱發(fā)送郵件的添加接收人功能

```css

ul?{

????list-style-type:?none;

????margin:?0;

????padding:?0;

}

li?{

????line-height:?30px;

}

.fl?{

????float:?left;

}

.fr?{

????float:?right;

}

.clear:after?{

????content:?'';

????display:?block;

????clear:?both;

}

.box?{

????padding:?10px;

????margin:?10px;

????border:?1px?solid?#000;

????width:?200px;

}

.multi-input?{

????margin:?10px;

????padding:?5px;

????border:?1px?solid?#666;

}

.multi-input>div?{

????height:?30px;

}

```

```jsx

import?React?from?'react';

import?'./index.css';

import?MultiInput?from?'./MultiInput';

export?default?class?GetDerviedStateFromPropsComponent?extends?React.Component?{

????constructor(...props)?{

????????super(...props);

????????this.state?=?{

????????????friends:?[

????????????????{id:?1,?name:?'張三',?email:?'zhangsan@email.com'},

????????????????{id:?2,?name:?'李四',?email:?'lisi@email.com'},

????????????????{id:?3,?name:?'王五',?email:?'wangwu@email.com'}

????????????],

????????????user:?null

????????};

????????this.addUser?=?this.addUser.bind(this);

????}

????addUser(user)?{

????????this.setState({user})

????}

????render()?{

????????let?{friends,?user}?=?this.state;

????????return?(

????????????<div?className="clear">

????????????????<h1>發(fā)送郵件</h1>

????????????????<hr/>

????????????????<ul?className="box?fl">

????????????????????{

????????????????????????friends.map(friend?=>?(

????????????????????????????<li?key={friend.id}?onClick={e=>this.addUser(friend)}>

????????????????????????????????{friend.name}

????????????????????????????</li>

????????????????????????))

????????????????????}

????????????????</ul>


????????????????<div?className="fl">

????????????????????<MultiInput?user={user}?/>

????????????????</div>


????????????</div>

????????);

????}

}

```

```jsx

import?React?from?'react';

import?'./index.css';

export?default?class?MultiInput?extends?React.Component?{

????static?defaultProps?=?{

????????user:?[]

????}

????constructor(...props)?{

????????super(...props);

????????this.state?=?{

????????????users:?[]

????????}

????????this.keyDown?=?this.keyDown.bind(this);

????}

????static?getDerivedStateFromProps(props,?state)?{

????????if?(props.user?&&?!state.users.find(u?=>?u.email?===?props.user.email))?{

????????????let?users?=?MultiInput.addNewUser(state.users,?{name:?props.user.name,?email:?props.user.email});

????????????return?{

????????????????users

????????????}

????????}

????????return?null;

????}

????keyDown({which,?target})?{

????????if?(which?===?13?&&?target.value?!==?'')?{

????????????let?users?=?MultiInput.addNewUser(this.state.users,?{name:?'',?email:?target.value});

????????????this.setState({

????????????????users

????????????});

????????????target.value?=?'';

????????}

????}

????static?addNewUser(users,?user)?{

????????if?(?!users.find(u?=>?u.email?===?user.email)?)?{

????????????users.push(user);

????????}

????????return?users;

????}

????render()?{

????????let?{users}?=?this.state;

????????return?(

????????????<div?className="multi-input">

????????????????{

????????????????????users.map(user?=>?(

????????????????????????<div?key={user.email}>{user.name}?{user.email};</div>

????????????????????))

????????????????}

????????????????<div>

????????????????????<input?type="text"?onKeyDown={this.keyDown}?/>

????????????????</div>

????????????</div>

????????);

????}

}

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,205評論 0 3
  • By clicking to agree to this Schedule 2, which is hereby ...
    qaz0622閱讀 1,639評論 0 2
  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,919評論 0 13
  • by Lene Nielsen The persona method has developed from bei...
    鮮核桃閱讀 1,376評論 0 0
  • 1、不安全的隨機數(shù)生成,在CSRF TOKEN生成、password reset token生成等,會造成toke...
    nightmare丿閱讀 3,997評論 0 1

友情鏈接更多精彩內(nèi)容