美文网首页
3.React 基础- 定义组件

3.React 基础- 定义组件

作者: 北疆小兵 | 来源:发表于2019-08-08 15:52 被阅读0次

*如何定义组件

新建一个继承Component的组件,实现render方法


class CommentBox extends Component {
  constructor(props) {
    super(props);
    this.state = {
      title: 'hello'
    };
  }

  render() {
    return (
      <View>
        <Text> 评论列表 adddbc</Text>
      </View>
    );
  }
}
  • 如何组合组件

将CommentList组件以标签的方式嵌入到CommentBox组件中


class CommentBox extends Component {
  constructor(props) {
    super(props);
    this.state = {
      title: 'hello'
    };
  }

  render() {
    return (
      <View style={styles.container}>
        <Text> 评论列表 adddbc</Text>
        <CommentList msg= {this.state.title} />
      </View>
    );
  }
}
  • 父组件向子组件传值

父组件在子组件的标签上设置标签值
<Comment author = "小明" />
子组件中通过this.props.fileName获取值
<Text> {this.props.author} </Text>

//父组件
class CommentList extends Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }

  render() {
    return (
      <View>
     
        <Comment content = "天气不错啊"  author = "小雪" data = "6分钟前" />
        <Comment content = "出去玩啊" author = "小明" data = "3分钟前"  />
      
      </View>
    );
  }
}
//子组件
class Comment extends Component {
  constructor(props) {
    super(props);
    this.state = {
    };
  }

  render() {
    return (
      <View >
        <Text> {this.props.author}  {this.props.data}</Text>
        <Text> {this.props.content} </Text>
      </View>
    );
  }
}
  • 访问页面上显示的元素 - refs
    例如用户提交表达的时候,要得到表单上面各项输入的内容

在标签上定义ref,使用的时候用this.refs.refName.value

//定义ref
 <TextInput ref='author' placeholder='姓名'></TextInput>
//使用ref
let author = this.refs.author.value;
  • 子组件传递数据给父组件

在父组件定义一个方法handleCommentSubmit用于提供给子组件调用, 在组件标签定义
<CommentFrom onCommentSubmit={this.handleCommentSubmit.bind(this)}/>

在子组件调用this.props.onCommentSubmit()就可以调用到父组件的这个方法了

class CommentBox extends Component {
handleCommentSubmit(comment){
     console.log('handleCommentSubmit '+JSON.stringify(comment));
     let comments = this.state.data;
     let newComment = comments.concat(comment);
     this.setState({
       data:newComment,
     });
  }
 render() {
    console.log("CommentBox render");
    return (
      <View style={{margin:20}}>
        <CommentList  data={this.state.data} />
        {/* 因为handleCommentSubmit方法中有用到this.setState,所以这里需要绑定下 */}
        <CommentFrom onCommentSubmit={this.handleCommentSubmit.bind(this)}/>
      </View>
    );
  }
 }

export default class CommentFrom extends Component {
render() {
    return (
      <View>
        <TextInput
          placeholder="姓名"
          onChangeText={text => {
            this.setState({
              name: text
            });
          }}
        />
        <TextInput
          placeholder="评论"
          onChangeText={text => {
            this.setState({
              content: text
            });
          }}
        />
        <Button title="提交" onPress={this.handleSubmit.bind(this)} />
      </View>
    );
  }
}

 handleSubmit() {
    let author = this.state.name;
    let content = this.state.content;
    let data = '刚刚';
    this.props.onCommentSubmit({author,content,data});

  }

相关文章

  • 3.React 基础- 定义组件

    *如何定义组件 新建一个继承Component的组件,实现render方法 如何组合组件 将CommentList...

  • vue系列笔记(三)------vue组件

    一 、组件基础(组件就是自定义标签) 1 定义组件名称 (1) 当使用 kebab-case (...

  • 组件化开发

    一.组件化介绍 组件化模块划分 基础组件: 宏定义/自定义分类/自定义工具类功能组件: 项目中常用功能,如:定位/...

  • Vue-Router

    Router:要实现的目的,就是将组件映射到路由,通过路由可以找到组件 基础篇 基本步骤: 定义组件 定义路由 实...

  • Vue-基础-04-重点

    Vue-基础-day04-重点 01-基础-组件-局部组件 组件: 封装html+css+js 两类+三步 定义 ...

  • vue 代码分离和懒加载

    基础概念 异步组件 vue.js允许将组件定义为一个工厂函数,异步的解析组件的定义。vue.js只在组件需要渲染时...

  • 7天深入Vue - vue组件之间的通讯与插槽(一)

    常用组件之间的通讯 1.props vue 基础父子组件通讯 数组形式 子组件定义props:['title', ...

  • 微信小程序开发入门:2.5 自定义组件,2.6 插件,2.7 分

    2.5 自定义组件 从小程序基础库版本 1.6.3 开始,小程序支持简洁的组件化编程。所有自定义组件相关特性都需要...

  • react搭建后台前端框架

    前言: react框架搭建,自定义搭建前端框架包含基础的crud组件封装、基础图表组件内置(d3、echarts)...

  • React基础-定义组件

    下图展示的是可以定义一个CommentBox组件,用于展示整个评论的列表页面,可以定义一个CommentForm组...

网友评论

      本文标题:3.React 基础- 定义组件

      本文链接:https://www.haomeiwen.com/subject/hmatjctx.html