Ref.Current 未定义
Ref.Current is Undefined
TLDR - 我需要帮助弄清楚如何使用 refs 更改子组件颜色。
我想通过做一个简单的例子来自学更多关于 React refs 的知识:比较子组件中的背景颜色变化与 props 和 refs。 我意识到了这一点这不是野外的最佳实践,但是,对于一个玩具示例,它似乎是一个很好的孤立练习。
import React from 'react';
import logo from './logo.svg';
import './App.css';
import SubComponent1 from './SubComponent1'
import SubComponent2 from './SubComponent2'
class App extends React.Component {
render() {
let myRef = React.createRef();
return (
<div className="App">
<header className="App-header">
<SubComponent1
message = "Passing via props"
color = "orange"
/>
<SubComponent2
message = "Passing via ref"
ref={myRef}
/>
{console.log("hi")}
{console.log(myRef)}
{console.log(myRef.current)}
{/*{myRef.current.style = { backgroundColor: 'green' }}*/}
</header>
</div>
);
}
}
export default App;
我希望能够在我的 App.js 文件中调用 myRef.current.style = { backgroundColor: 'green' } (或类似的东西),但是,似乎 myRef.current 当我尝试调用它时为空。
当我控制日志时,我得到 {current : null},但展开后,组件数据就在那里。我读到这可能是因为 myRef.current 在 compomentDidMount 之后被擦除,但我不确定从这里去哪里。
如果我想着手完成这个示例,对我来说最好的方法是什么?理想情况下,我想我希望能够调用我已注释掉的行或类似的东西。
你必须在组件中定义 ref 变量,而不是在 render 函数下。
component ... {
myRef = React.createRef();
...
render() {
...
...
}
}
TLDR - 我需要帮助弄清楚如何使用 refs 更改子组件颜色。
我想通过做一个简单的例子来自学更多关于 React refs 的知识:比较子组件中的背景颜色变化与 props 和 refs。 我意识到了这一点这不是野外的最佳实践,但是,对于一个玩具示例,它似乎是一个很好的孤立练习。
import React from 'react';
import logo from './logo.svg';
import './App.css';
import SubComponent1 from './SubComponent1'
import SubComponent2 from './SubComponent2'
class App extends React.Component {
render() {
let myRef = React.createRef();
return (
<div className="App">
<header className="App-header">
<SubComponent1
message = "Passing via props"
color = "orange"
/>
<SubComponent2
message = "Passing via ref"
ref={myRef}
/>
{console.log("hi")}
{console.log(myRef)}
{console.log(myRef.current)}
{/*{myRef.current.style = { backgroundColor: 'green' }}*/}
</header>
</div>
);
}
}
export default App;
我希望能够在我的 App.js 文件中调用 myRef.current.style = { backgroundColor: 'green' } (或类似的东西),但是,似乎 myRef.current 当我尝试调用它时为空。
当我控制日志时,我得到 {current : null},但展开后,组件数据就在那里。我读到这可能是因为 myRef.current 在 compomentDidMount 之后被擦除,但我不确定从这里去哪里。
如果我想着手完成这个示例,对我来说最好的方法是什么?理想情况下,我想我希望能够调用我已注释掉的行或类似的东西。
你必须在组件中定义 ref 变量,而不是在 render 函数下。
component ... {
myRef = React.createRef();
...
render() {
...
...
}
}