React 无状态组件更新组件内的value值

React 无状态组件更新组件内的value值


在做项目中,使用无状态组件比较方便,而且可以快速渲染, 但是无状态组件有个缺陷, 父组件的数据更新了,但是子组件内不更新, 缺少效果.

解决办法, 在需要更新的Input 或者其他的antd组件中加入 key={isUpdate}

让父组件更新数据时同时更新isUpdate(add => add + 1) 就可以联动更新子组件的数据了

代码上输入框组件

const InputModel2 = ({ callback, item, isUpdate = 0}) => {
  const [error, setError] = useState('');
  function onChange(data) {
    setError('');
    if (!item.isNull && !data.target.value) {
      setError(item.title + "不能为空!");
      callback(item.var, data.target.value, true);
    }
    if (item.VerifyRegular && !new RegExp(item.VerifyRegular).test(data.target.value)) {
      setError(item.title + "填写错误!");
      callback(item.var, data.target.value, true);
    } else {
      callback(item.var, data.target.value.trim(), false);
    }
  }

  return (
    <Row>
      <Col span={10}>
        <label style={{ fontSize: 16, float: "right", paddingRight: 20 }}>{item.title}
          {
            item.tag ?
              <span style={{ color: 'red' }}>*</span>
              : null
          }
          :
          {
            item.desc ?
              <Tooltip title={item.desc} >
                <QuestionCircleOutlined style={{ paddingLeft: 10 }} />
              </Tooltip>
              : ''
          }
        </label>
      </Col>
      <Col span={14}>
        <Input key={isUpdate} placeholder={item.placeholder || ''} defaultValue={item.value || ''} onChange={onChange} style={{ width: 200 }} />
        {
          error ?
            <Col style={{ paddingLeft: 10 }}>
              <div style={{ color: "red" }}>{error}</div>
            </Col>
            : ''
        }
      </Col>
    </Row>
  )
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React中,子组件修改父组件是通过回调函数的方式实现的。具体步骤如下: 1. 在父组件中定义一个状态和一个用于更新状态的函数,并将该函数作为props传递给子组件。 2. 在子组件中,通过props获取父组件传递的更新状态的函数。 3. 在子组件中,通过事件或其他操作调用该函数,并传递需要更新作为参数。 4. 在父组件中的更新状态的函数中,接收子组件传递的,并更新组件状态。 下面是一个示例代码: ```jsx // 父组件 import React, { useState } from 'react'; import ChildComponent from './ChildComponent'; function ParentComponent() { const [value, setValue] = useState(''); const handleValueChange = (newValue) => { setValue(newValue); }; return ( <div> <h1>父组件:{value}</h1> <ChildComponent onValueChange={handleValueChange} /> </div> ); } export default ParentComponent; // 子组件 import React from 'react'; function ChildComponent({ onValueChange }) { const handleChange = () => { const newValue = '新的'; onValueChange(newValue); }; return ( <div> <button onClick={handleChange}>修改父组件</button> </div> ); } export default ChildComponent; ``` 在上面的示例中,父组件通过useState定义了一个状态value,并将其传递给子组件ChildComponent。子组件中的按钮点击事件触发handleChange函数,该函数调用了父组件传递的onValueChange函数,并传递了一个新的。父组件中的handleValueChange函数接收到子组件传递的新后,更新了父组件状态value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值