gpt4 book ai didi

javascript - react createElement 不工作返回 [对象对象]

转载 作者:行者123 更新时间:2023-11-30 20:23:54 25 4
gpt4 key购买 nike

我有这个简单的代码,我正在尝试使用 replace prototype 来替换旧内容并用新内容创建新元素。

例如

class App extends React.Component {
constructor() {
super();
this.state = {
name: 'bold'
};
}
replace = () =>{
let oldState = this.state.name;
oldState = oldState.replace(/bold/i, React.createElement('b',{ children: 'withBold'}) )
console.log(oldState)
this.setState({ name: oldState})
}
render() {
return (
<div>
<button onClick={this.replace}>Click</button><br />
{this.state.name}
</div>
);
}
}

ReactDOM.render(<App />, document.getElementById('code'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='code'></div>

我试过 document.createElement 我得到了 [object HTMLElement]

我的代码有什么问题?

最佳答案

String.prototype.replace 期望替换值是字符串或函数。您正在传递一个对象 (React.createElement(...))。

您的问题在这里:

oldState = oldState.replace(
/bold/i,
// The following must be a string, but you are passing in an object:
React.createElement('b',{ children: 'withBold'})
);

有很多方法可以解决这个问题。就个人而言,对于这样一个简单的案例,我会这样写:

this.setState(prevState => ({
name: prevState.name.toLowerCase() === 'bold'
? <b>withBold</b>
: prevState.name
});

关于javascript - react createElement 不工作返回 [对象对象],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51127542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com