请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

这一小节,父子通信理解不了,请蜗牛老师解惑

avatar-selector.js

              <List renderHeader={() => gridHeader}>
               <Grid data={avatarList} columnNum={5} onClick={elm => {
                    this.setState(elm)        // elm代表的是什么
                    this.props.selectAvatar(elm.text)
                }}/>
              </List>

bossinfo.js

             <AvatarSelector selectAvatar= {(imgname) => {
                this.setState({
                    avatar: imgname
                })
            }}
            ></AvatarSelector>

其中,ES6函数,这种写法又如何理解?

selectAvatar= {(imgname) => {
                this.setState({
                    avatar: imgname
                })
            }}


正在回答

1回答

每个组件 在写的时候可以在外层赋予它属性(此例子就是给props 一个 selectAvatar 供调用)


例如 :  <AvatarSelector selectAvatar={.........} ></AvatarSelector>


这行代表你在bossinfo.js使用了AvatarSelector这个组件, 并且传给组件一个方法 叫做selectAvatar  


而这个方法在jsx 最外面{}是必须的不多说,


ES6单个参数可以省略()

selectAvatar其实就是个方法 imgname => { this.setState( {avatar: imgname } ) }

拿到名字字串后对BossInfo 这个组件 的state更新 avatar状态





—————————————————————————————

onClick={elm => {

this.setState(elm)        // elm代表的是什么

this.props.selectAvatar(elm.text)

}


每当 avatar-selector.js  里面的onClick 执行的时候, 他会把你选中的


avatarList 里面的元素拿出来"当成方法传入的参数" 也就是 elm , 里面元素定义也就是当时规定 { icon: xxx.png, text: xxx}



elm传进去当成参数后自然就可以使用elm.text当成参数执行 this.props.selectAvatar(elm.text) 




白话:给我一个elm物件 =>  我会做两件事情

1.this.setState(elm) 

我帮你把AvatarSelector组件使用react 里面的 setState更新avatar然后会自动渲染AvatarSelector的画面呦~) 


2.this.props.selectAvatar(elm.text)

帮你执行父组件bossinfo.js 的selectAvatar的方法 , 让父组件的state知道当前选的avatar的名称,这样你才有资料可以上传




不知道这样好不好理解 

有误会的话在请老师或大神同学更正






 


0 回复 有任何疑惑可以回复我~
  • 提问者 百兽凯多00 #1
    解答的非常细致,易懂,费心了,非常感谢!
    回复 有任何疑惑可以回复我~ 2018-02-24 17:28:50
  • 话说好像组件里并没有avator这个state额,this.setState({
                        avatar: imgname
                    })设置的是谁的state呢
    回复 有任何疑惑可以回复我~ 2018-08-25 07:29:10
问题已解决,确定采纳
还有疑问,暂不采纳
Redux+React Router+Node.js全栈开发
  • 参与学习       1822    人
  • 解答问题       750    个

全网唯一的React 16+Redux+React Router4实战课程,学到手是你的真本领!

了解课程
意见反馈 帮助中心 APP下载
官方微信