【发布时间】:2021-03-31 18:20:02
【问题描述】:
我正在制作一个 react.js 购物清单应用程序,我有它,以便您输入值并将它们打印到表格中。这是我第一次使用 react,我想将我的表放在单独的页面上,我知道 ROUTER 方法,但在实现它时遇到了麻烦。
这是我的代码 注意:我还没有添加任何在页面之间导航的东西,但我希望打印按钮从 App.js 导航到 Details.js
import NavBar from "./components/navbar";
import "./App.css";
import Counters from "./components/counters";
import Details from "./Details";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
class App extends Component {
state = {
counters: [
//example of objects in array
/*{ id: 1, value: 2, text: "hi" },*/
],
};
constructor(props) {
super(props);
console.log("app- constructor");
}
componentDidMount() {
console.log("app- mouneted");
}
handleIncrement = (counter) => {
const counters = [...this.state.counters];
const index = counters.indexOf(counter);
counters[index] = { ...counter };
counters[index].value++;
this.setState({ counters });
};
handleDecrement = (counter) => {
const counters = [...this.state.counters];
const index = counters.indexOf(counter);
counters[index] = { ...counter };
counters[index].value--;
this.setState({ counters });
};
handleReset = () => {
const counters = this.state.counters.map((c) => {
c.value = 0;
return c;
});
this.setState({ counters });
};
handleName = () => {
var name = prompt("name");
return name;
};
handleCreate = () => {
const create = this.state.counters.length + 1;
const counter = this.state.counters.push({
id: create,
value: 0,
text: this.handleName(),
});
this.setState({ counter });
};
handleDelete = (counterId) => {
const counters = this.state.counters.filter((c) => c.id !== counterId);
this.setState({ counters });
};
handleInfo = () => {
let x;
//loops through all tems and adds the to the list
for (x = 0; x <= this.state.counters.length; x++) {
//breaks loop if x is == to counters array
if (this.state.counters.length == x) {
break;
}
const info = this.state.counters[x]["text"];
const quantity = this.state.counters[x]["value"];
console.log(info, quantity);
//creates rows based on input
var table = document.getElementById("myList");
var row = table.insertRow(1);
var itemCell = row.insertCell(0);
var quantityCell = row.insertCell(1);
itemCell.innerHTML = info;
quantityCell.innerHTML = quantity;
}
//calls the print function
return <a href="http://localhost:3000/Details"></a>;
};
render() {
console.log("rendered");
return (
<React.Fragment>
<NavBar
totalCounters={this.state.counters.filter((c) => c.value > 0).length}
/>
<main className="container">
<Counters
counters={this.state.counters}
onReset={this.handleReset}
onCreate={this.handleCreate}
onIncrement={this.handleIncrement}
onDecrement={this.handleDecrement}
onDelete={this.handleDelete}
onInfo={this.handleInfo}
/>
</main>
<div>
<table bordered id="myList">
<tr>
<th>Items</th>
<th>Quantity</th>
</tr>
</table>
</div>
<style>
{`
th{
border: 2px solid black;
padding: 2px;
min-width: 100px;
font-size: 22px;
font-style: bold;
}
td{
border: 2px solid black;
padding: 2px;
min-width: 100px;
font-size: 18px;
}
`}
</style>
</React.Fragment>
);
}
}
export default App;
这就是我的应用程序的样子 但我希望表格位于详细信息页面上 任何帮助表示赞赏
【问题讨论】:
标签: javascript reactjs react-router-dom react-router-redux