Javascript React createElement不工作返回[对象]
我有一个简单的代码,我试图使用Javascript React createElement不工作返回[对象],javascript,reactjs,Javascript,Reactjs,我有一个简单的代码,我试图使用替换原型替换旧内容,并用新内容创建新元素 比如说 类应用程序扩展了React.Component{ 构造函数(){ 超级(); 此.state={ 名称:“粗体” }; } 替换=()=>{ 让oldState=this.state.name; oldState=oldState.replace(/bold/i,React.createElement('b',{children:'withBold'})) console.log(oldState) this.se
替换原型
替换旧内容,并用新内容创建新元素
比如说
类应用程序扩展了React.Component{
构造函数(){
超级();
此.state={
名称:“粗体”
};
}
替换=()=>{
让oldState=this.state.name;
oldState=oldState.replace(/bold/i,React.createElement('b',{children:'withBold'}))
console.log(oldState)
this.setState({name:oldState})
}
render(){
返回(
单击
{this.state.name}
);
}
}
ReactDOM.render(,document.getElementById('code'))代码>
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
});
this.setState(prevState=>({
名称:prevState.name.toLowerCase()==='bold'
?粗体
:prevState.name
});
我不太明白您想要完成什么。oldState.replace(/bold/I,'withBold')
做的不是您想要的吗?@Tholle嗨,我正在尝试创建一个DOM元素,它应该像withBold