React如何让页面不可编辑
禁用输入控件
在React中,可以通过设置输入元素的disabled或readOnly属性来禁止用户编辑。disabled会完全禁用交互并显示灰色样式,而readOnly允许用户聚焦但不允许修改。
<input type="text" disabled value="不可编辑内容" />
<textarea readOnly defaultValue="只读内容" />
条件渲染只读UI
根据业务逻辑动态控制编辑状态。例如通过状态变量决定是否渲染可编辑组件:

function ReadOnlyComponent({ data }) {
return <div>{data}</div>;
}
function EditableComponent({ data, onChange }) {
return <input value={data} onChange={onChange} />;
}
function Demo({ isEditMode }) {
return isEditMode ? <EditableComponent /> : <ReadOnlyComponent />;
}
全局内容保护
对于需要防止右键复制或文本选择的场景,可以通过CSS和事件拦截实现:

<div
style={{ userSelect: 'none' }}
onContextMenu={e => e.preventDefault()}
>
受保护内容
</div>
表单整体禁用
使用fieldset元素配合disabled属性可以批量禁用表单内所有控件:
<fieldset disabled>
<input type="text" />
<select><option>选项</option></select>
<button>提交</button>
</fieldset>
高阶组件封装
创建HOC统一处理编辑状态控制逻辑:
function withReadOnly(WrappedComponent) {
return function(props) {
return props.readOnly
? <span>{props.value}</span>
: <WrappedComponent {...props} />;
};
}
const ProtectedInput = withReadOnly(Input);






