Textarea 不更新道具更新:使用 React
Textarea does not update on props update: using React
我需要根据父组件的 props 更新文本区域的默认值。由于某种原因,它在设置值时更新,但在设置默认值时不更新。不幸的是,我需要用户可以编辑文本区域,因此设置值是不够的。
例如,这会更新文本区域,但无法编辑:
import React, {Component} from 'react';
export default class RenderedScript extends Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea value={this.props.formScript}></textarea>}
</div>
)
}
}
这可以编辑,但不会在道具更改时更新:
export default class RenderedScript extends Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea defaultValue={this.props.formScript}></textarea>}
</div>
)
}
}
任何建议都会有所帮助。谢谢!
看看这个例子:https://codesandbox.io/s/lznvmmjjz
基本上父级负责控制子级的值,直到子级更改自己的值 - 如果父级更新值,子级的值将被覆盖。
当您设置默认值时,文本区域不会随道具更改而更新是正常的
你应该决定你的组件是否应该被控制
对于不受控的组件,这就可以了,你只需要在需要的时候获取值
class RenderedScript extends React.Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea defaultValue={this.props.formScript}></textarea>}
</div>
);
}
}
ReactDOM.render(<RenderedScript formScript="default" />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>
<div id="app"></div>
如果需要受控组件,可以通过设置onChange监听来处理值变化
这是一篇关于 contolled and uncontrolled inputs
的文章
我需要根据父组件的 props 更新文本区域的默认值。由于某种原因,它在设置值时更新,但在设置默认值时不更新。不幸的是,我需要用户可以编辑文本区域,因此设置值是不够的。
例如,这会更新文本区域,但无法编辑:
import React, {Component} from 'react';
export default class RenderedScript extends Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea value={this.props.formScript}></textarea>}
</div>
)
}
}
这可以编辑,但不会在道具更改时更新:
export default class RenderedScript extends Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea defaultValue={this.props.formScript}></textarea>}
</div>
)
}
}
任何建议都会有所帮助。谢谢!
看看这个例子:https://codesandbox.io/s/lznvmmjjz
基本上父级负责控制子级的值,直到子级更改自己的值 - 如果父级更新值,子级的值将被覆盖。
当您设置默认值时,文本区域不会随道具更改而更新是正常的
你应该决定你的组件是否应该被控制
对于不受控的组件,这就可以了,你只需要在需要的时候获取值
class RenderedScript extends React.Component {
render(){
return(
<div>
{this.props.formScript &&
<textarea defaultValue={this.props.formScript}></textarea>}
</div>
);
}
}
ReactDOM.render(<RenderedScript formScript="default" />, document.getElementById('app'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.0.0/react-dom.min.js"></script>
<div id="app"></div>
如果需要受控组件,可以通过设置onChange监听来处理值变化
这是一篇关于 contolled and uncontrolled inputs