javascript - 单击按钮后如何将包含输入数据的 TextField 传递到表单中?

标签 javascript material-ui

我的主页上显示了一个 TextField 和一个 Button (都是 Material-ui 组件)。我希望能够单击该按钮并填充一个表单,其中包含先前的 TextField 以及已写入其中的任何文本。我当前的代码只是在表单中创建了 TextField 的新实例,同时也保留了原始的 TextField。如何将现有的 TextField 引入表单而不进行复制?

FormTextField.js

const FormTextField = props => {
    return (
        <TextField
            fullWidth={true}
            multiline={true}
            rows="10"
            variant="outlined"
        >
        {props.data}
        </TextField>

    )
}

export default class FormTextField extends Component {
    render() {
    data={this.props.data} />
    return (

        {FormTextField}

        );
    }
};

表单.js

const Form= () => {
return (
    <FormLabel">Input Text...</FormLabel>
    <FormTextField />
);}
export default Form;

App.js

const AddButton= (props) => {
return (
    <Button variant="contained" onClick={props.onClick}>
    New Interaction
    </Button>
    )
}


export default class App extends Component {
constructor(props) {
    super(props);
    this.state = {show: false};
}
showForm = () => {
    this.setState({
        show: true,
    });
}
render() {
    return(
    <Fragment>
        <Header />
        <FormTextField />
        <AddButton onClick={this.showInteractionForm} />{this.state.show ? 
<Form /> : null}
    </Fragment>
    );
}

};

最佳答案

当您想要在两个组件之间共享数据时,您可以根据代码以不同的方式解决此问题,解决方案可能是:

您的应用控制数据,

在您所在的州可以添加:

this.state = {
 inputData = '';
}

您需要将更新函数传递给您的FromTextField

<FormTextField onTextUpdate={(text) => this.setState({ inputData: text })} />

您的表单字段必须由App控制,因此您也需要传递要显示的数据:

<FormTextField data={this.state.inputData} onTextUpdate={(text) => this.setState({ inputData: text })} />

(您需要将该修改添加到 FormTextField,它们很简单)

最后一步是对 Form 执行相同的操作

<Form data={this.state.inputData} onTextUpdate={(text) => this.setState({ inputData: text })} />

Form内部,您需要将dataonTextUpdate传递给FormTextField

您可以将 (text) => this.setState({ inputData: text }) 重构为类中的方法。

编辑

https://codesandbox.io/embed/stackoverflow-form-react-9188m你可以找到我之前告诉过你的实现。

关于javascript - 单击按钮后如何将包含输入数据的 TextField 传递到表单中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57012831/

相关文章:

javascript - Nervgh Angular 文件上传 - 如何限制要上传的图像数量?

javascript - onclick ="AuthorityCheck({{meeting.people}})",预期标识符、字符串或数字

reactjs - 在 react 选择上使用 isClearable 时事件为空

javascript - Material-UI 表格标签中的 Formik

reactjs - 如何使用 Material UI 在对话框中显示降档建议?

reactjs - 向 MUI 徽章内容添加工具提示?

reactjs - 如何将 MUI AppBar 中的搜索组件居中?

javascript - 使用 jQuery,从 json 可能格式不正确的跨域 url 访问 json

javascript - 使用变量获取位置然后修改mongodb中的特定对象

java - 如何将输入中的值发送到 Liferay 中的 AutoLogin 类