React简单组件的创建与使用

React简单组件的创建与使用

原文地址:React简单组件的创建与使用

创建React组件

通过定义一个class继承React.Component来创建一个React组件

class Header extends React.Component{
    //组件内必须要有render函数
    render(){
        //返回组件的模板
        return <p onClick={this.clickFun}>我是一个Header</p>
    }
}

使用React组件

将我们之前的组件直接放入需要渲染的dom中

const app = (
    <div>
        <Header></Header>
        <Header />
    </div>
)
//获取需要渲染的节点
const root = document.getElementById('app')
//将创建的app节点渲染进页面中
ReactDOM.render(app, root)

给组件传值

建立组件后,若是我们使用组件免不了需要传值,下面介绍下如何给组件传值

//定义一个子组件
class Header extends React.Component{
    render(){
        //可以获取传值进来的内容
        //this为当前组件的对象
        console.log(this.props)
        return <p>我是一个Header</p>
    }
}

const app = (
	<div>
        <!--给组件传值-->
    	<Header title="标题" />
    </div>
)
const root = document.getElementById("app")
ReactDOM.render(app,root)

添加事件

给子组件添加一个点击事件

class Header extends React.Component{
    //定义一个点击的方法
    clickFun(){
        console.log(点击了Header)
    }
    render(){
        //添加点击事件
        return <p onClick={this.clickFun}>我是一个Header</p>
    }
}
const app = (
    <div>
        <Header></Header>
        <Header />
    </div>
)
const root = document.getElementById('app')
ReactDOM.render(app, root)

点击事件方法的this指向问题解决办法:

//1.直接使用bind()方法改变this指向
class Header extends React.Component{
    clickFun(){
        console.log(this.props)
    }
    render(){
        return <p onClick={this.clickFun.bind(this)}>我是一个Header</p>
    }
}

//2.通过constructor将方法的this指向一直绑定在this上
//constructor 是一种用于创建和初始化class创建的对象的特殊方法。
class Header extends React.Component{
    constructor(props){
        super(props);
        this.clickFun = this.clickFun.bind(this)
    }
    clickFun(){
        console.log(this.props)
    }
    render(){
        return <p onClick={this.clickFun}>我是一个Header</p>
    }
}

注意:

  1. 组件命名最好首字母大写,避免与原生的节点名称冲突
  2. key值为特殊字段,通过组件传值无法获取
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中实现拖拽组件的方法有多种,其中比较常用的是使用react-dnd库。下面是一个简单使用示例: 1. 安装react-dnd和react-dnd-html5-backend: ``` npm install --save react-dnd react-dnd-html5-backend ``` 2. 创建可拖拽和可放置的组件: ```jsx import { useDrag, useDrop } from 'react-dnd'; function DraggableItem(props) { const [{ isDragging }, drag] = useDrag({ item: { type: 'item', id: props.id }, collect: monitor => ({ isDragging: monitor.isDragging(), }), }); return ( <div ref={drag} style={{ opacity: isDragging ? 0.5 : 1 }}> {props.children} </div> ); } function DroppableArea(props) { const [{ isOver }, drop] = useDrop({ accept: 'item', drop: (item, monitor) => { props.onDrop(item.id); }, collect: monitor => ({ isOver: monitor.isOver(), }), }); return ( <div ref={drop} style={{ backgroundColor: isOver ? 'lightgreen' : 'white' }}> {props.children} </div> ); } ``` 3. 在父组件使用可拖拽和可放置的组件: ```jsx function App() { const [items, setItems] = useState([1, 2, 3]); const handleDrop = (id) => { setItems(items.filter(item => item !== id)); }; return ( <div> {items.map(item => ( <DraggableItem key={item} id={item}> Item {item} </DraggableItem> ))} <DroppableArea onDrop={handleDrop}> Drop here </DroppableArea> </div> ); } ``` 在上面的示例中,`DraggableItem`组件是可拖拽的,`DroppableArea`组件是可放置的。当`DraggableItem`被拖拽到`DroppableArea`上时,会调用`handleDrop`函数删除该项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值