如何解决如何在ReactJS中的函数中声明全局变量?
我想在函数内部声明一个全局变量,然后在函数外部使用它。我尝试将JSX放入函数中,以便可以轻松访问它,但是由于渲染器返回null,因此无法正常工作。
APP.JS:
class App extends React.Component {
render() {
firebase
.database()
.ref()
.limitToLast(1)
.on('child_added',function (childSnapshot) {
var snap = childSnapshot.val();
var category = snap.category;
var condition = snap.condition;
var postname = snap.postname;
var postprice = snap.postprice;
var username = snap.username;
var usernumber = snap.usernumber;
var imageURL = snap.imageURL;
var postdescription = snap.postdescription;
var whatsapplink = 'https://wa.me/' + usernumber + '?text=';
});
return (
<>
<div></div>
<div style={{float: 'left'}}>
<Ads
imageURL={imageURL}
name={postname}
price={postprice}
category={category}
condition={condition}
description={postdescription}
username={username}
usernumber={usernumber}
whatsapplink={whatsapplink}
/>
</div>
</>
);
}
}
export default App;
ADS.JS:
import React from 'react';
import '../App.css';
class ads extends React.Component {
render() {
return (
<div>
<img src={this.props.image} alt="image"></img>
<h2>{this.props.name}</h2>
<h2>{this.props.price}</h2>
<h2>{this.props.category}</h2>
<h2>{this.props.condition}</h2>
<h2>{this.props.description}</h2>
<h2>{this.props.username}</h2>
<a href={this.props.whatsapplink}>
<button>Chat with Seller</button>
</a>
</div>
);
}
}
export default ads;
解决方法
反应组件具有内置状态对象。状态对象是您存储属于组件的属性值的位置。当状态对象更改时,组件将重新渲染。有关React Go Through this doc
的生命周期方法的更多信息import React from 'react';
import firebase from 'firebase'
import './App.css'
import Ads from './component/ads.js'
class App extends React.Component {
constructor(props) {
super(props)
this.state = {
category: '',condition: '',postname: '',postprice: '',username: '',usernumber: '',imageURL: '',postdescription: '',whatsapplink: ''
}
}
componentDidMount() {
firebase.database().ref().limitToLast(1).on('child_added',(childSnapshot) => {
var snap = childSnapshot.val();
this.setState({
category: snap.category,condition: snap.condition,postname: snap.postname,postprice: snap.postprice,username: snap.username,usernumber: snap.usernumber,imageURL: snap.imageURL,postdescription: snap.postdescription,whatsapplink: "https://wa.me/" + snap.usernumber + "?text=",})
})
}
render() {
const { category,condition,postname,postprice,username,usernumber,imageURL,postdescription,whatsapplink } = this.state
return (
<>
<div></div>
<div style={{ float: "left" }}>
<Ads
category={category}
condition={condition}
name={postname}
price={postprice}
username={username}
usernumber={usernumber}
imageURL={imageURL}
description={postdescription}
whatsapplink={whatsapplink} />
</div>
</>
)
}
}
export default App;
,
如果您确实需要GLOBAL变量,则可以使用window
对象并向其添加属性。我想它随处可见。
赞:
const myFunction = value => {
window["newprop"] = value
}
但是总的来说,不推荐
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。