render函数处理动态获取img的src属性

博客主要描述了使用iview的上传文件Upload组件动态添加图片时遇到的问题,能拿到返回的图片路径,但赋值给img的src时却为空,还提到了Vue.set方法及render函数处理img的src属性,欢迎指正问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述: 用iview的上传文件Upload组件写动态添加图片,可以拿到返回的图片路径,赋值给img的src时一直为空


1, 效果图,布局代码没粘贴

2, 实现效果,点击上传按钮上传图片成功之后把图片显示出来

{
        title: '产品图片',
        key: 'filePath',
        render: (h, params) => {
            return h('div', [
              h('Upload', {
                props: {
                  ref: 'upload',
                  type: 'drag',
                  showUploadList: false,
                  onSuccess: (res, file) => { // 上传方法要写在这里面,对应每一行的数据
                    if (file && file.response.result) {
                      let files = file.response.result[0].link // 上传成功之后获取的图片路径
                      // params.row.filePath = files //1: 点击上传成功之后,获取的图片路径,可以拿到值,但是这样赋值给不到img的src
                      this.$set(params.row, 'filePath', files) // 2: 必须这样写,用vue的set方法
                    }
                  },
                  action: 'http://XXXXXXX/UploadFile' // 上传图片路径
                }
              }),
              h('img', {
                style: {
                  width: '100%',
                  height: '100%',
                  borderRadius: '4px'
                },
                attrs: {
                  src: params.row.filePath // 如果是1那种写法,不能实时获取,获取的还是undefined
                }
              })
            ])
          }
      }
复制代码

3, Vue.set( target, key, value )方法: Vue.set

    1,Vue.set( target, key, value ) 是全局注册
    
    2,this.$set( target, key, value ) 是局部注册
复制代码

备注: 如有问题,欢迎指正

本文为原创,如需转载请注明出处: render函数处理img的src属性

### 如何在 React 的 `render` 函数中实现换行 当在 React 中使用 JSX 编写组件时,在 `render` 函数内的 `return` 语句后面直接换行可能会导致意外的行为。这是因为 Babel 在编译过程中会在每行自动添加分号,这可能导致 `return;` 成为空操作,从而引发错误:Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.[^2] 为了避免这种情况并安全地实现在 `render` 函数内换行,有几种方法: #### 使用圆括号包裹返回的内容 最常见的方式是在 `return` 后面加上一对圆括号 `( )` 来包裹要渲染的 JSX 结构。这样做不仅可以让代码更加易读,而且能防止由于自动插入分号而引起的解析错误。 ```jsx class App extends Component { render() { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo"/> <p> Edit <code>src/App.js</code> and save to reload. </p> <a className="App-link" href="https://reactjs.org" target="_blank" rel="noopener noreferrer" > Learn React </a> </header> </div> ); } } ``` #### 返回数组形式的数据结构 另一种较少见的做法是让 `return` 返回一个数组,其中每个元素代表一行或多行 JSX 表达式。不过这种方式并不推荐用于常规场景下,因为大多数时候单个根节点就足够了,并且多个顶层元素可能带来不必要的复杂度。 ```jsx var HelloComponent = React.createClass({ render: function(){ return [ <h1>Hello World!</h1>, <p>This is an example of returning multiple elements.</p> ]; } }); ``` 为了确保良好的可维护性和兼容性,建议始终采用第一种做法——即用圆括号包围整个 JSX 块作为 `return` 的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值