网站开发国内外研究状况,手机网站模板案例,和田网站建设,wordpress免费家居主题React事件的命名采用小驼峰方式#xff08;cameCase#xff09;,而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数#xff0c;而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this
需要谨慎对待JSX回调函数中的…React事件的命名采用小驼峰方式cameCase,而不是小写 使用JSX语法时你需要传入一个函数作为事件处理函数而不是一个字符串 你不能通过返回false 的方式阻止默认行为。你必须显示式的使用preventDefault 1 this
需要谨慎对待JSX回调函数中的this可以使用 ● 公共属性剪头函数 ● 匿名函数 ● bind进行绑定
2 向事件处理程序传递参数 3 Ref
● Refs提供了一种方式允许我们访问DOM节点或在render方法中创建React元素 ● 在React渲染生命周期时表单元素上的value 将会覆盖DOM节点中的值在非受控组件中你经常希望React赋予组件一个初始值但是不去控制后续的更新在这种情况下你可以指定一个defaultValue属性而不是value
3.1 为DOM元素添加ref
可以使用ref去 存储DOM节点的引用 当ref属性用于HTML元素时构造函数中使用React.createRef()创建的ref接收底层DOM元素作为其current属性
import React from ./react;
import ReactDOM from ./react-dom;
class Sum extends React.Component{numberAnumberBresultconstructor(props){super(props);this.numberA React.createRef();//{current:null}this.numberB React.createRef();this.result React.createRef();}handleClick (event){let numberA this.numberA.current.value;let numberB this.numberB.current.value;this.result.current.value parseFloat(numberA)parseFloat(numberB);}render(){return (input ref{this.numberA}/input ref{this.numberB}/button onClick{this.handleClick}/buttoninput ref{this.result}//)}
}
ReactDOM.render(Sum/,document.getElementById(root));3.2 为class 组件添加ref
import React from ./react;
import ReactDOM from ./react-dom;
class TextInput extends React.Component{constructor(props){super(props);this.inputRef React.createRef();}getTextInputFocus (){this.inputRef.current.focus();}render(){return input ref{this.inputRef}/}
}
class Form extends React.Component{constructor(props){super(props);this.textInputRef React.createRef();}getFormFocus (){//this.textInputRef.current就会指向TextInput类组件的实例this.textInputRef.current.getTextInputFocus();}render(){return (TextInput ref{this.textInputRef}/button onClick{this.getFormFocus}获得焦点/button/)}
}ReactDOM.render(Form/,document.getElementById(root));3.3 ref转发
● 不能在函数组件上使用ref 属性因为他们没有实例 ● ref转发是一项将ref自动的通过组件传递到其一子组件的技巧 ● ref转发允许某些组件接收ref,并将其向下传递转发它给其他组件
import React from ./react;
import ReactDOM from ./react-dom;
function TextInput(props,ref){return input ref{ref}/
}
const ForwardedTextInput React.forwardRef(TextInput);
class Form extends React.Component{constructor(props){super(props);this.textInputRef React.createRef();}getFormFocus (){//this.textInputRef.current就会指向TextInput类组件的实例this.textInputRef.current.focus();}render(){return (ForwardedTextInput ref{this.textInputRef}/button onClick{this.getFormFocus}获得焦点/button/)}
}ReactDOM.render(Form/,document.getElementById(root));
/**
Warning:
Function components cannot be given refs.
Attempts to access this ref will fail.Did you mean to use React.forwardRef()?
不能给函数组件添加ref* * */