我的React state
:
//...
this.state = {
mylist: [
{
"id": 0,
"trueorfalse": false
},
{
"id": 1,
"trueorfalse": false
}
]
}
//...
我正在尝试基于trueorfalse
id
值
这是我到目前为止所做的,但没有成功:
var idnum = e.target.id.toString().split("_")[1] //getting the id via an element id (0 or 1 in this case)
var TorF = true
if (type === 1) {
this.setState({
mylist: this.state.mylist.map(el => (el.id === idnum ? Object.assign({}, el, { TorF }) : el))
})
}
我真的想使其动态化,因此trueorfase
将与现在相反:
var idnum = e.target.id.toString().split("_")[1] //getting the id via an element id (0 or 1 in this case)
if (type === 1) {
this.setState({
mylist: this.state.mylist.map(el => (el.id === idnum ? Object.assign({}, el, { /* if already true set to false or vice versa */ }) : el))
})
}
如何更新代码以使动态性如第二个示例中所示(如果可能的话),否则第一个示例就可以了
答案 0 :(得分:1)
使用map
的另一种解决方案:
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
mylist: [
{
id: 0,
trueorfalse: false
},
{
id: 1,
trueorfalse: true
}
]
};
}
toggleBoolean = () => {
const ID = Number(this.state.selectedID);
this.setState(prevState => ({
mylist: prevState.mylist.map(item => {
if (item.id === ID) {
return { ...item, trueorfalse: !item.trueorfalse };
} else {
return item;
}
})
}));
};
render() {
return (
<div className="App">
<p>{`State values: ${JSON.stringify(this.state.mylist)}`}</p>
<button onClick={this.toggleBoolean}>Change true/false values</button>
<label>Insert ID:</label>
<input
type="number"
onChange={event => this.setState({ selectedID: event.target.value })}
/>
</div>
);
}
}
答案 1 :(得分:0)
我认为以下代码可以解决您的第二个问题。
In [103]: [eq1.evalf(subs=s, chop=True) for s in sols]
Out[103]: [0, 0, 0, 0, 0, 0, 0, 0, 0]
In [104]: [eq2.evalf(subs=s, chop=True) for s in sols]
Out[104]: [0, 0, 0, 0, 0, 0, 0, 0, 0]