我有一个简单的React App正在进行中。当然,我的index.js
文件看起来像这样:
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<App />, document.getElementById('root'));
registerServiceWorker();
更深入,我的App.js
文件声明了一个App extends Compoennt
类,其中包含我要渲染的元素及其功能:
import React, { Component } from "react";
import logo from "./SmartTransit_logo.png";
import MyButton from "./components/MyButton";
import "./App.css";
import { isWallet, helloWorld } from "./services/neo-service";
class App extends Component {
state = {
inputValue: ""
};
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">Smart Transit Live Demo</h1>
</header>
<div style={{ width: 500, margin: "auto", marginTop: 10 }}>
<MyButton
buttonText="My Button"
onClick={ params => {helloWorld();}}
/>
</div>
</div>
);
}
}
export default App;
来自MyButton
的{{1}}声明:
/components/MyButton
最后,import React, { Component } from "react";
import PropTypes from "prop-types";
class MyButton extends Component {
render() {
return (
<button className="MyButton"
value = {this.props.buttonText}
>
{this.props.children}
</button>
);
}
}
MyButton.propTypes = {
buttonText: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired,
};
export default MyButton;
的声明是这样完成的(注意:helloWorld()
是我正在使用的npm包):
neon-js
我的问题是生成的Button没有呈现其import { wallet } from "@cityofzion/neon-js";
export function isWallet(address) {
console.log(wallet.isAddress(address));
return wallet.isAddress(address);
}
export function helloWorld() {
console.log("Hello world");
return 1;
}
文本,虽然它获得了value
代码就好了但它看起来是空的!
不仅如此,按下它不会在控制台中记录“Hello World”,因为它应该与它的CSS
功能断开连接。
对我做错了什么的想法?
答案 0 :(得分:1)
this.props.children
是呈现组件时JSX标记之间的内容。考虑到这一点,以下是您应该在App
中呈现按钮的方式:
<MyButton onClick={() => helloWorld()}>
My Button
</MyButton>
以下是MyButton
代码的外观:
class MyButton extends Component {
render() {
return (
<button className="MyButton" onClick={this.props.onClick}>
{this.props.children}
</button>
)
}
}
如您所见,不再需要buttonText
道具;这就是children
道具的用途。
答案 1 :(得分:0)
当您要使用super(props)
时,您需要在类构造函数中定义this.props
constructor(props) {
super(props);
}
在MyButton
组件中定义它。
答案 2 :(得分:0)
问题是,你没有从mybutton组件调用onClick方法,而按钮在它的开始和结束标记之间取值。
使用此代码:
this.props.onClick()}&GT; {this.props.buttonText}