如何在图像 ex: <img src='returnedString' /> 的源标记中使用返回的字符串(React v16.0.0 的新功能)?

How Can I use the returned string (new feature of React v16.0.0) in the source tag of an image ex: <img src='returnedString' />?

我想使用 React v16.0.0 的新功能来返回一个字符串,然后在

中使用该字符串

<img src="returnedString" >

当前的行为是什么?

好吧,如果我在 <div > <MyComponent /> </div>

我可以看到屏幕上显示的字符串(见附件截图),但我的目标是在 <img src="returnedString" />

中使用该字符串

这是我的代码:

// My component that returns strings
 class MyComponent extends Component {
   render(){

    switch (this.props.type) {
      case 'text':
        return this.props.json.data[this.props.Key]
        break
      case 'image':
        return this.props.json.data[this.props.Key]
        break
        default:
        return null
        break
    }
   }
 }

const UserComponent = (props) => {
  return (
    <div>
      {/* this displays the string on the page */}
      <MyComponent type='image' Key='avatar' desc='Abified image'  {...props} />

       {/* If I console.log this line I get <img src={[object object]} /> */}
       <img src={<MyComponent type='image' Key='avatar' desc='Abified image'  {...props} />} />
    </div>
   )
}

// Parent Component
class App extends Component {
constructor(props){
  super(props)
  this.state = {
   json:[]
  }
 }

 // Fetching data from an api
 componentDidMount(){
   fetch("https://reqres.in/api/users/2")
     .then(response => response.json())
     .then(json => {
       this.setState({json: json })
   })
 }

 render() {
 return (
   <div>
     <UserComponent {...this.state}/>
   </div>
  );
 }
}

export default App;

我怎样才能做到这一点?

预期的行为是什么?

我想在

中使用返回的字符串

React 有哪些版本?

React v16.0.0

这在以前版本的 React 中有效吗?

否,因为它是 React v16.0.0 中的新功能

如果要动态设置图像的 src 属性,请使用普通 javascript 函数而不是组件:

const getImageSrc = props => {
    switch (props.type) {
      case 'text':
      case 'image':
        return props.json.data[props.Key]
    }
}

然后您可以从组件的 render 方法中调用它,如下所示:

<img src={ getImageSrc({...this.props, type: 'image', Key: 'avatar'}) } />

因为这个

<MyComponent type='image' Key='avatar' desc='Abified image' />

正在 dom.

中创建一个 文本节点

但在这种情况下

<img src={<MyComponent type='image' Key='avatar' desc='Abified image' {...props} />

您的 src 属性正在获取一个 react 元素对象

你永远不会得到这样的字符串。 如果您想动态获取 src,请尝试这样的操作

const UserComponent = (props) => {
// calculate you src here
 const imageSrc = props.json.data['avatar'];
 return (
   <div> 
     <img src={ imageSrc } />
   </div> 
 )
}

希望这对您有所帮助。