标签:efs 获得 情况下 tin NPU 数组 struct ofo 添加
1. Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素
2. 在典型的React数据流中,`props`是父组件与子组件交互的唯一方式,要修改一个子组件,需要使用新的props来重新渲染它。但是在某些情况下需要在典型数据流之外强制修改子组件。被修改的子组件可能是一个React组件的实例,也可能是一个DOM元素
3. 过时API:String 类型的 Refs
避免使用 refs 来做任何可以通过声明式实现来完成的事情
让更高的组件层级拥有这个state,是更恰当的
==question==:更高层级的组件是指 父组件 还是 子组件?
注意:React16.3版本引入了React.createRef() API,如果在使用较早版本的React,推荐使用回调形式的refs
refs是使用React.createRef()创建的,并通过 ref 属性附加到React元素
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.myRef = React.createRef();
}
render() {
return <div ref={this.myRef} />;
}
}
当 ref 被传递给 render中的元素时,对该节点的引用可以在ref中的current属性中被访问
const node = this.myRef.current
注意:不能在函数组件上使用 ref 属性,因为他们没有实例
React 会在组件挂载时给 current 属性传入 DOM 元素,并在组件卸载时传入 null 值。ref 会在 componentDidMount 或 componentDidUpdate 触发前更新
class CustomTextInput extends React.Component {
constructor(props) {
super(props);
// 创建一个 ref 来存储 textInput 的 DOM 元素
this.textInput = React.createRef();
this.focusTextInput = this.focusTextInput.bind(this);
}
focusTextInput() {
// 直接使用原生 API 使 text 输入框获得焦点
// 注意:我们通过 "current" 来访问 DOM 节点
this.textInput.current.focus();
}
render() {
// 告诉 React 我们想把 <input> ref 关联到
// 构造器里创建的 `textInput` 上
return (
<div>
<input
type="text"
ref={this.textInput} />
<input
type="button"
value="Focus the text input"
onClick={this.focusTextInput}
/>
</div>
);
}
}
class AutoFocusTextInput extends React.Component {
constructor(props) {
super(props);
this.textInput = React.createRef();
}
componentDidMount() {
this.textInput.current.focusTextInput();
}
render() {
return (
<CustomTextInput ref={this.textInput} />
);
}
}
不能在函数组件上使用 ref 属性,因为它们没有实例
可以在函数组件内部使用 ref 属性,只要它指向一个 DOM 元素或 class 组件
react支持另一种设置 refs 的方式,称为“回调refs”,它能帮助你更精细地控制何时 refs 被设置和接触
class CustomTextInput extends React.Component {
constructor(props) {
super(props);
this.textInput = null;
this.setTextInputRef = element => {
this.textInput = element;
};
this.focusTextInput = () => {
// 使用原生 DOM API 使 text 输入框获得焦点
if (this.textInput) this.textInput.focus();
};
}
componentDidMount() {
// 组件挂载后,让文本框自动获得焦点
this.focusTextInput();
}
render() {
// 使用 `ref` 的回调函数将 text 输入框 DOM 节点的引用存储到 React
// 实例上(比如 this.textInput)
return (
<div>
<input
type="text"
ref={this.setTextInputRef}
/>
<input
type="button"
value="Focus the text input"
onClick={this.focusTextInput}
/>
</div>
);
}
}
标签:efs 获得 情况下 tin NPU 数组 struct ofo 添加
原文地址:https://www.cnblogs.com/let423/p/11756299.html