【React工作记录六十一】react children初步理解

简介: 【React工作记录六十一】react children初步理解

导语

react children初步理解




编辑


核心父组件

<BaseImgPreview>
              {(modal) => (
                <img
                  style={{ width: '100%', height: '70px' }}
                  src={record.activityImg}
                  onClick={() => modal.show(record.activityImg)}
                />
              )}
            </BaseImgPreview>

核心子组件

import React, { Component, Fragment } from 'react';
import { Modal } from 'antd';
export default class BaseImgPreview extends Component {
  constructor(props) {
    super(props);
    this.state = {
      visible: false,
      previewImage: '',
    };
  }
  show = (previewImage) => {
    this.setState({ visible: true, previewImage });
  };
  hide = () => {
    this.setState({ visible: false });
  };
  // Modal Ok事件
  handleOk = () => {
    this.setState({ visible: false });
  };
  render() {
    const { visible, previewImage } = this.state;
    const { children, modalProps = {}, title } = this.props;
    return (
      <Fragment>
        {children({
          visible: visible,
          show: this.show,
          hide: this.hide,
        })}
        <Modal
          title={title ? title : '查看图片'}
          maskClosable={false}
          visible={visible}
          onOk={this.handleOk}
          onCancel={this.hide}
          width={1000}
          footer={null}
          {...modalProps}
        >
          <div
            style={{
              width: '100%',
              display: 'flex',
              alignItems: 'center',
              justifyContent: 'center',
            }}
          >
            <img
              alt="example"
              style={{ maxHeight: '700px', objectFit: 'cover', maxWidth: '90%' }}
              src={previewImage}
            />
          </div>
        </Modal>
      </Fragment>
    );
  }
}

核心归纳

1首先父组件得代码


style={{ width: '100%', height: '70px' }}


                 src={record.activityImg}作为回显值得一个使用


2点击事件表示组件得一个传参


onClick={() => modal.show(record.activityImg)也就是对应得子组件里面的一个传参


3子组件做的是自己本身的一个回显操作 大概就是这样


运行结果

image.png

相关文章
|
6月前
|
前端开发
react-router中的render、children、component
react-router中的render、children、component
212 1
|
5月前
|
前端开发 索引
解决React报错Encountered two children with the same key
解决React报错Encountered two children with the same key
|
前端开发
前端项目实战陆拾壹react-admin+material ui-踩坑-List需要Datagrid中children写法
前端项目实战陆拾壹react-admin+material ui-踩坑-List需要Datagrid中children写法
57 0
|
6月前
|
前端开发 开发者
React 组件的 children 数据使用
React 组件的 children 数据使用
100 0
|
6月前
|
前端开发 JavaScript
React中通过children prop或者React.memo来优化子组件渲染【react性能优化】
React中通过children prop或者React.memo来优化子组件渲染【react性能优化】
81 0
|
前端开发
前端项目实战玖拾壹react-admin+material ui-踩坑-List的用法之children用法之SimpleList
前端项目实战玖拾壹react-admin+material ui-踩坑-List的用法之children用法之SimpleList
61 0
|
前端开发
前端项目实战玖拾react-admin+material ui-踩坑-List的用法之children用法之WithListContext
前端项目实战玖拾react-admin+material ui-踩坑-List的用法之children用法之WithListContext
56 0
|
前端开发
react children初步理解
react children初步理解
44 0
|
前端开发
前端项目实战陆拾贰react-admin+material ui-踩坑-List需要Datagrid中children写法
前端项目实战陆拾贰react-admin+material ui-踩坑-List需要Datagrid中children写法
53 0
|
前端开发 开发者
React 组件的 children 数据使用
React 组件的 children 数据使用
96 0