(1)在子组件为表单组件,在填入数据后请求接口,接口报错输入的内容不符合要求,此时需要显示回原来值。
(2)一开始是使用ref绑定子组件,利用setFieldsValue设置为原值。后面发现页面展示的数据没有发生变化

父组件使用的子组件是一个高阶组件,子组件带有Form.create(),真正作为表单处理的又是在子组件的子组件内部。导致子组件内部的表单数据无法更改

解决方法:

将ref改为wrappedComponentRef

//父组件
formProps = null; //用于保存子组件的form
<JKTable {...this.getParams()} ref={'JKTable'}
         wrappedComponentRef={(res)=>{
             this.formProps = res.props.form;              
></JKTable>
//父组件更新子组件表单数据
this.formProps.setFieldsValue({
    name:'123'
});
                    ref和wrappedComponentRef区别场景:原因:解决方法:将ref改为wrappedComponentRef场景:(1)在子组件为表单组件,在填入数据后请求接口,接口报错输入的内容不符合要求,此时需要显示回原来值。(2)一开始是使用ref绑定子组件,利用setFieldsValue设置为原值。后面发现页面展示的数据没有发生变化原因:父组件使用的子组件是一个高阶组件,子组件带有Form.create(),真正作为表单处理的又是在子组件的子组件内部。导致子组件内部的表单数据无法更改解决
				
父调子 有这句话的时候 继续封装了一层 const Contractdef = Form.create({ name: 'def ’ })(def ); class abc extends Component { constructor(props) { super(props); this.state = { // state设置一个id id: '' // 使用wrappedComponentRef <B wrappedComponentRef={this.cRef}/> // 也有下面的这种使用方式(就可以不使用上面的 React.createRef()) child1.js import React, { PureComponent } from 'react'; export default class Child1 extends PureComponent { state = { name: 'child1111' render(){ return (
项目使用antd-react组件库。用Form.create想要拿到ref,即想拿到子组件的数据和方法,可以使用wrappedComponentRef 以下为官方举例 class CustomizedForm extends React.Component { ... } // use wrappedComponentRef const EnhancedForm = Form.cr...
componentDidMount(){ console.log("componentDidMount...",this) this.refs.textInput.focus() render(){ console.log("render...")
什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式。 具体地说,高阶组件就是一个接收一个组件并返回另外一个新组件的函数! 解决什么问题? 随着项目越来越复杂,开发过程中,多个组件需要某个功能,而且这个功能和页面并没有关系,所以也不能简单的抽取成一个新的组件,但是如果让同样的逻辑在各个组件里各自实现,无疑会导致...
在React中,想要在父组件引用子组件的属性或方法就需要使用ref将子组件的组件实例在父组件中引入。 但是如果子组件export的是使用react-redux库的connect函数封装的话 export default connect(mapStateToProps, mapDispatchToProps)(ChildComponent) 在父组件render函数中渲染子组件 <ChildComponent ref={this.childComponent = ref} />
ref和out都是C#语言中的关键字,它们的主要作用是在方法调用中传递参数。它们的使用区别如下: 1. 使用方式:在方法定义时,如果参数需要被传递进去并且可能需要被修改,可以使用ref或out关键字来修饰参数。使用ref关键字时,传递的参数必须已经初始化;而使用out关键字时,传递的参数可以未经初始化。 2. 传递方式:ref和out都是按引用传递参数的方式,即传递的是参数的内存地址,而不是参数的值。不同之处在于,使用ref关键字时,传递的参数必须先被初始化,而使用out关键字时,传递的参数可以在方法内部初始化。 3. 返回值要求:在方法内部,使用ref修饰的参数可以被修改,而使用out修饰的参数必须被赋值。因此,在使用out关键字时,方法必须确保在所有可能的代码路径中都会为参数赋值。 总的来说,ref和out都是用来在方法间传递参数的关键字,它们都可以传递参数的内存地址,但是使用方式和传递要求有所不同。在使用时需要注意选择合适的关键字,并确保正确使用,以避免出现不必要的错误。